Do 'обнуляем время,выключаем реле и светодиод v=0 Reset Rele 'выключение мотора и диода Reset Red set green 'ждем когда истечет время while v<30 wend
'время истекло reset green 'выключаем светодиод зеленый Set Rele 'реле включило мотор Set Red 'загорелся светодиод 'здесь проверка,разомкнулись ли концевики while R_end = 0 or L_end=0 wend waitms 100 'ждем замыкания концевиков while R_end = 1 and L_end=1 wend
Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс апр 03, 2022 09:23:18
Встал на лапы
Зарегистрирован: Вс мар 27, 2011 07:48:48 Сообщений: 127 Откуда: г. Екатеринбург
Рейтинг сообщения:0
Приветствую всех. Мне кажется, я нашел решение своей проблемы. Код приводить не буду, он получится очень маленьким. Прикладываю схему, нарисовал по быстрому от руки плюс небольшой комментарий. Концевики включены последовательно, разрывают цепь питания мотора. Пара контактов Р1-1 включают мотор по команде с контроллера. А второе реле Р2 (твердотельное), будет шунтировать концевики за 5 сек до включения мотора, и выключаться через 5 сек после запуска мотора. Т.К полный цикл от концевика до концевика занимает примерно 15 сек. думаю, должно получиться нормально. Думаю, на этом тему можно закрыть.
А как у вас реверс мотора делается? Я этого что-то не увидел!
зы.. Ещё раз- вы бы ещё туда не МК, а "управляющий компьютер" прилепили бы.. "по минимуму" это вообще на нескольких транзисторах решается, ну, или, на 555 таймере.. Если, конечно, движение мотора вам нужно не "с точностью до микросекунды"
зы.. А концевик "на размыкание" что, поставить нельзя?
Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт апр 05, 2022 15:28:20
Встал на лапы
Зарегистрирован: Вс мар 27, 2011 07:48:48 Сообщений: 127 Откуда: г. Екатеринбург
Рейтинг сообщения:0
Реверс мотору не нужен - такая кинематика у механизма. Мотор вращается всегда в одну сторону. Концевики будут работать на размыкание в цепи питания мотора, об этом я написал выше. Уже второй человек в комментариях упоминает о схеме на 555, но никто не приводит рабочую схему.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Реверс мотору не нужен - такая кинематика у механизма. Мотор вращается всегда в одну сторону. Концевики будут работать на размыкание в цепи питания мотора, об этом я написал выше. Уже второй человек в комментариях упоминает о схеме на 555, но никто не приводит рабочую схему.
А вы учитываете, что нп. когда сработал(разомкнулся) левый концевик, то ему нужно время, что бы снова сработать (замкнуться), а вы сразу проверяете его состояние.
Проще всего введите переменную "куда едем", если едем в лево, то проверять только левый концевик и наоборот.
Или второй вариант, после срабатывания левого концевика (размыкания), запускаете реле и проверяете, когда он замкнется и только после этого начинаете проверять состояние правого концевика.
Уже второй человек в комментариях упоминает о схеме на 555, но никто не приводит рабочую схему.
Я и третий раз упомяну.. Вы просто нормальное ТЗ и описание самой "механизьмы" сделайте!
зы.. Пока у меня впечатление, что вы пытаетесь запустить механизм от автомобильных дворников в прерывистом режиме- во всяком случае- очень похоже- там тоже- вращение в одну сторону с остановкой в определённом месте, и запуск с определённой периодичностью.
зызы.. 555 таймер- это наиболее дешевый (на сегодня) способ генерации импульсов заданной длительности, следующих с заданной частотой.
Приветствую всех. Мне кажется, я нашел решение своей проблемы. Код приводить не буду, он получится очень маленьким. Прикладываю схему, нарисовал по быстрому от руки плюс небольшой комментарий. Концевики включены последовательно, разрывают цепь питания мотора. Пара контактов Р1-1 включают мотор по команде с контроллера. А второе реле Р2 (твердотельное), будет шунтировать концевики за 5 сек до включения мотора, и выключаться через 5 сек после запуска мотора. Т.К полный цикл от концевика до концевика занимает примерно 15 сек. думаю, должно получиться нормально. Думаю, на этом тему можно закрыть.
Похоже, что в вашей схеме, реле Р1 вообще можно выкинуть, это если по середине не надо останавливать. Достаточно реле 2 включать на время, что бы успел замкнуться разомкнутый концевик, но не успел разомкнуться второй концевик.
Здравствуйте, существует ли некое переполнение EPROOM? Делал GSM сигнализацию, ситуация следующая, есть программа на меге 328, занимает порядка 60% , при работе спустя около 3 дней происходит некий глюк связанный с епром. Проявляется это в том, что например, номер, сохраненный в памяти МК перестает отвечать, или на экране вылезают выходят лишние символы которые каким то образом загоняются и заменяются в епром
'Подключение динамика '======================= Config Portb.3 = Output : Set Portc.3 ' Кнопка постановки и снятия с охраны Spkr Alias Pinb.3 ' Динамик Pc817 Alias Pinc.3
'Пин для включения модуля, вывод DTR '======================= Config Portc.1 = Output Pkey Alias Portc.1 Pkey = 0
'Выход для 1 удаленного управления - реле 1 '======================= Config Portb.2 = Output : Set Portd.7 ' PIR СЕНСОР Outpin1 Alias Portb.2 Outpin1 = 0 Pir Alias Pind.7
'Выход для 2 удаленного управления - реле 2 '======================= Config Portb.1 = Output Outpin2 Alias Portb.1 Outpin2 = 0
'Выход для 2 удаленного управления - реле 3 '======================= Config PortB.0 = Output : Set Portd.3 ' Вход для подключения геркона или кнопки - механического датчика Outpin3 Alias PortB.0 Outpin3 = 0 Gerkon Alias Pind.3
'Вход для RC5 '======================= Config Rc5 = Pind.6 , Wait = 1500 Config Pind.6 = Input Dim Address As Byte Dim Command As Byte
Enable Interrupts
Declare Sub Getline(s As String) Declare Sub Flushbuf()
' Настройка АЦП для датчика ВОДЫ Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim W As Integer Dim Wsingl As Single Dim Wstr As String * 5
'---------- << ПЕРЕМЕННЫЕ Config Debounce = 50 ' Антидребезг Dim F As Byte ' Счетчик Dim M As Byte ' Счетчик как F - запасной Dim M1 As Byte ' Счетчик для задержки для повторного звонка, чтобы не названивал если дверь открыта. M1 = 0 Dim M2 As Byte ' Для входа в меню прямо в рабочем режиме. M2 = 0
Dim Y As Word ' Счетчик для датчика воды Dim J As Word ' Счетчик для датчика температуры M = 0 Y = 0 J = 0 Dim Count As Byte ' Счетчик удержания кнопки
Dim Sms_chg As String * 3 ' Состояние входа зарядки для СМС Dim Chgs As Byte ' Для запрета отправки СМС, если пропало 220 придет СМС 1 раз до след постановки на охрану
Dim Number As String * 11 ' Номер телефона Dim Temp As String * 10 Dim Temp1 As String * 10 Dim Temp2 As String * 10 Dim Rs As Byte Dim A As Byte Dim S As String * 50 Dim B As Byte Dim R As Byte Dim Z As String * 15 Dim Sms_num As String * 2 ' Порядковый номер смс Dim Stmp As String * 1 Dim Sms As String * 120 Dim Otvet As String * 160 ' Сообщение, которое модуль будет отправлять Dim Sk As String * 66 Dim Tmr As Byte Dim Sms_val As Byte
Dim Loadpin1 As Bit ' Значение пина выхода 1 Dim Loadpin2 As Bit ' Значение пина выхода 2 Dim Loadpin3 As Bit ' Значение пина выхода 3
Dim Wtrspk As Byte ' Вкл Выкл динамика ( пока настроен на датчик воды, можно настроить так чтобы вообще вырубать звук) Dim Eeprom_infa5 As Eram Byte Wtrspk = Eeprom_infa5 'If Wtrspk = 225 Then Wtrspk = 0
Dim Sendsms As Byte ' Переменная для разрешения отправки сообщения по срабатыванию датчик воды - связан с счетчиком количества трех срабатываний Dim Eeprom_infa3 As Eram Byte Sendsms = Eeprom_infa3
Dim Zvonok As Byte ' Переменная для разрешения вызовов Dim Eeprom_infa2 As Eram Byte Zvonok = Eeprom_infa2 'Zvonok = 0 ' На время тестов
Dim Chargesms As Byte ' Cтатус для контроля зарядки
'---------- << Для динамика Dim Frq As Word Dim D As Word
'---------- << Для меню Dim Temper As Byte ' Значение температуры введенная с пульта RC5 Dim Eeprom_infa1 As Eram Byte Temper = Eeprom_infa1 If Temper = 255 Then Temper = 45
Dim Rlc As Byte '<<< Разрешаем или запрещаем управлять реле по датчику температуры Dim Eeprom_infa4 As Eram Byte Rlc = Eeprom_infa4 If Rlc > 1 Or Rlc < 0 Then Rlc = 0
Dim Wlc As Byte '<<< Разрешаем или запрещаем управлять реле по датчику воды Dim Eeprom_infa6 As Eram Byte Wlc = Eeprom_infa6 If Wlc > 1 Or Wlc < 0 Then Wlc = 0
Dim Tsms As Byte '<<< Разрешаем или запрещаем отправку СМС по достижению температуры, работает независимо от постановки и снятия с охраны Dim Eeprom_infa7 As Eram Byte Tsms = Eeprom_infa7 If Tsms > 1 Or Tsms < 0 Then Tsms = 0
'Dim Zv As byte ' Переменная для перезвона в случае зависания 'Dim Eeprom_infa11 As Eram Byte 'Zv = Eeprom_infa11
Dim Zad As byte ' Задержка перед вызовом по мех.датчику (пока) Dim Eeprom_infa12 As Eram Byte Zad = Eeprom_infa12 If Zad < 0 or Zad > 3 Then Zad = 1
Dim Mm As Byte Mm = 1 ' Для навигации по меню '----------
Dim 3sms As Word ' Если три раза сработал датчик воды то больше СМСки не отправляем, т.е. смски шлем только 3 раза до повторной постановки на охрану Dim Eeprom_infa As Byte 'Soff = 0 If 3sms > 1 Or 3sms < 0 Then 3sms = 0
'''' СОХРАНЕНИЕ РАБОТЫ РЕЛЕ В СЛУЧАЕ ЗАВИСАНИЯ И ПЕРЕЗАГРУЗКИ Dim k1 As Byte ' 1 релейный канал Dim Eeprom_infa8 As Eram Byte k1 = Eeprom_infa8
Dim k2 As Byte ' 2 релейный канал Dim Eeprom_infa9 As Eram Byte k2 = Eeprom_infa9
Dim k3 As Byte ' 3 релейный канал Dim Eeprom_infa10 As Eram Byte k3 = Eeprom_infa10
Dim Load1 As String * 3 ' RL1 (Статус в СМС словами ОN или OFF) Dim Load2 As String * 3 ' RL2 Dim Load3 As String * 3 ' RL1
Dim Wtrinf As String * 1 ' Для отображения на экране и в СМС Dim Kninf As String * 1 Dim Pirinf As String * 1
Dim Secinf As String * 3 ' Сообщение состояния охраны в СМC и на ЖК, YES-NO (Охрана включена или выключена, ОБЩЕЕ СОСТОЯНИЕ СИСТЕМЫ)
Dim Pitanie As String * 3 ' Сообщение для СМС, YES-NO для контроля зарядки
Dim Stwtr As String * 1 ' Статус для СМС было срабатывание или нет (не путать с текущим состоянием) Dim Stkn As String * 1 Dim Stpir As String * 1 Stwtr = "" Stkn = "" Stpir = ""
Dim T As Byte ' Температура Dim Sign As String * 5 ' Знак температуры Dim Byte0 As Byte Dim Byte1 As Byte Dim T1 As Byte Dim T2 As Byte Dim Tstr As String * 4
Dim Numb As Byte Dim Connect As String * 6 ' Уровень сигнала Dim Connectvar As Byte ' Уровень сигнала в числовом значении Dim Operator As String * 20 'Dim Date_str As String * 20 Dim Time_str As String * 20 Dim Bat_str As String * 9 ' Для показа зарядки в процентах Dim Bat_str1 As String * 9 ' Показ знака напряжения до запятой Dim Bat_str2 As String * 9 ' Показ знака напряжения после запятой
Dim Phonenumbereeprom As Eram String * 12 Dim Phonenumber As String * 12 Phonenumber = Phonenumbereeprom
Почему при получении СМС от оператора например при пополнении баланса номер телефона ранее сохраненный в EPROOM заменяется разными цифрами? именно при СМС от оператора
часть переменных. Dim Sms_num As String * 2 ' Порядковый номер смс Dim Sms As String * 120 Dim Otvet As String * 160 ' Сообщение, которое модуль будет отправлять Dim Sk As String * 66 ...
Dim Phonenumbereeprom As Eram String * 12 Dim Phonenumber As String * 12 Phonenumber = Phonenumbereeprom
...
Обработка смски: If Sms = "savenumber" Then ' Если сообщение содержит данный текст Phonenumber = Number ' Номер с которого пришла смс используется как номер для отправки сообщений Phonenumbereeprom = Phonenumber ' Записываем номер в энергонезависимую память Otvet = "Saved: " + Phonenumber Setfont Font8x8tt Lcdat 1 , 1 , " " Lcdat 1 , 15 , "Save the number" Wait 1 Lcdat 1 , 1 , " " Gosub Atd Gosub Cls1 End If
То есть все работает отлично, с любых номеров команды обрабатываются, стоит пополнить баланс - сохраненный номер телефона слетает
Подключите модуль к компу и пообщайтесь с ним через терминал, увидите что именно он шлет. Dim Sms As String * 120 - может и не хватить, оператор любит рекламу пихать в USSD ответ. Bascom не контролирует переполнение строковых переменных. Вполне возможно затирание других переменных при переполнении строки.
Да собсно и рассказывать нечего . Сделал побитовое копирование а баском на автомате преобразовал в double . Вот и весь код...
Код:
N_bits_double = 0 For N_byte = 1 To 8 'перебираем байты For N_bits_byte = 0 To 7 Vpls.n_bits_double = Value(n_byte).n_bits_byte 'копируем биты Incr N_bits_double Next ' Next
_________________ Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Сломал всю голову, уже планирую собрать схему которая будет отслеживать зависание и перезагружать МК. - - -
Работа s SIM900 SIM800, МК зависает если например замкнуть RX и TX, видимо в буфер сыпится мусор и из за этого программа застревает в цикле и не может из него выйти, я так понимаю. Как решить этот ребус?
Пробовал задавать переменную и увеличивать ее, например если F=100 то выходим из цикла - см. код ниже
Код:
Sub Getline(s As String) S = "" dim F as byte Do
B = Inkey() 'берем символ из буфера в формате ASCII Select Case B Case 0 'возвращает в случае пустого буфера Case 13 'возврат каретки (Enter), заместо него можно поставить пробел Case 10 : If S <> "" Then Exit Do 'конец строки, значит выходит из подпрограммы Case Else : If B > 31 Then S = S + Chr(b) 'печатаемые символы начинаются с кода 32 по таблице АСКИ, из них составляем строку End Select incr F if F>100 then 'выйдем после 100 итераций exit do end if Loop F=0 'обнуляем переменную End Sub
Но в этом случае программа перестает читать смс сообщения
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения