Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Кто передавал температуру 18в20 по радиоканалу?


Кто передавал температуру 18в20 по радиоканалу?

Сообщений 121 страница 150 из 164

121

Передача с использованием ШИМ, про, что в данный момент базар ведется. Выглядит так.http://s8.uploads.ru/t/Z35Gz.jpg

0

122

Вам сфотографировать мою макетку, размером почти А4 ? ;)
Там разложены три устройства, каша не хуже... ;)

0

123

Nord
Здесь с тремя проводами бьюсь, нуууууууууууууууууу очень долго, :flag:
Хорошо всретить рождество.

0

124

Ну, с праздником, если он кому-то ценен... ;)

Исторически нам, славянам, это "рождество" - как рождение таракана под половицей... ;)

-1

125

Не будем флудить в этой теме, просто минус Вам.

+2

126

rom-i
вот  накидал простенькие программки для передачи м приема на частоте.Передача на А8, прием на А328p. 328 принимает и выводит на экран от 0 до 9 по циклу.  Все передается и принимается. Может пригодится.....
передача:

Код:
$regfile = "m8adef.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 64
Dim Chislo As Byte, Timer0pre As Byte
Config Portb.2 = Output
Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Stop Timer0
Timer0 = Timer0pre
Start Timer0 : On Timer0 Pulse
Enable Interrupts

'*******************Тело программы**********************************************                                                \
Do
   If Chislo = 0 Then Timer0pre = 20
   If Chislo = 1 Then Timer0pre = 40
   If Chislo = 2 Then Timer0pre = 60
   If Chislo = 3 Then Timer0pre = 80
   If Chislo = 4 Then Timer0pre = 100
   If Chislo = 5 Then Timer0pre = 120
   If Chislo = 6 Then Timer0pre = 140
   If Chislo = 7 Then Timer0pre = 160
   If Chislo = 8 Then Timer0pre = 180
   If Chislo = 9 Then Timer0pre = 200
   Incr Chislo
   Waitms 500
   If Chislo = 10 Then Chislo = 0
Loop
End
'*******************************************************************************

Pulse:
   Stop Timer0
   Timer0 = Timer0pre
   Toggle Portb.2
   Start Timer0
Return


прием:

Код:
$regfile = "m328pdef.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 100
$swstack = 100
$framesize = 200
'----------------------------------------------------------------
Dim Chislo As Byte
Dim Imp As Word
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16x2
Cursor Off
Cls
Config Timer1 = Timer , Prescale = 64, Capture_Edge=Rising, Noise_Cancel=1
Config Portb.0 = Input
Enable Timer1 : Start Timer1
Enable Capture1 : On Capture1 Puls
Enable Interrupts
'-------------------------------------------------------------------------------
Do
   Print Imp
   If Imp > 7550 And Imp < 7555 Then Chislo = 0
   If Imp > 6910 And Imp < 6945 Then Chislo = 1
   If Imp > 6270 And Imp < 6275 Then Chislo = 2
   If Imp > 5630 And Imp < 5635 Then Chislo = 3
   If Imp > 4990 And Imp < 4995 Then Chislo = 4
   If Imp > 4350 And Imp < 4355 Then Chislo = 5
   If Imp > 3710 And Imp < 3715 Then Chislo = 6
   If Imp > 3070 And Imp < 3075 Then Chislo = 7
   If Imp > 2430 And Imp < 2435 Then Chislo = 8
   If Imp > 1790 And Imp < 1795 Then Chislo = 9
   Locate 1 , 1
   Lcd Chislo ; " "
Loop
End
'--------------------Подпрограмма захвата -------------------------

Puls:
   Imp = Timer1
   Timer1 = 0
Return


Исходники,Протеус

В Протеусе у  A328p: СLKDIV8=1

Отредактировано Niya (2019-01-07 12:39:57)

+1

127

Niya
Отличный подход. Это третья версия передачи. Так идеально подходит для работы с текстовыми символами. Но уступает помехазащищенности бинарной передачи. Полоса разширяется.
Есть пара компектов радиомодулей дешевых. Шума больше чем полезного сигнала. По UART на них получилось работать не дальше метра. С бинарным ШИМ до 15. Но с чужим кодом. Обкатаю в железе.

0

128

По этому принципу делал пульт от робота для сына. На расстояние 50-60 метров работает без проблем.

0

129

Niya
Что за радиомодули?

0

130

Китайский ширпотреб FS1000A 433Mhz.
Ссылка

Отредактировано Niya (2019-01-09 19:19:16)

0

131

Niya написал(а):

Китайский ширпотреб FS1000A 433Mhz.

А приемник XY-MK-5V ? ;)
Проходили... ;) Вот уж действительно - "ширпотреб" в полном понимании...
Перешел на HC-12 и забыл про эту парочку, как про страшный сон...
Дороже, но нервы не бесплатные. ;)

Отредактировано Nord (2019-01-09 20:24:14)

0

132

Nord написал(а):

А приемник XY-MK-5V ?

Он самый...Пульт для робота из  них  работает, но получить данные без ошибок трудновато.  Поэтому пока забросил это дело, время будет может помучаюсь еще...

Отредактировано Niya (2019-01-09 20:52:14)

0

133

HC-12 неплохая штука, но порядочно жрет. FS1000A конечно отстой. Получше работают комплекты кварцованные. Приемник не на контуре. Но с HC-11(12) не поспоришь. Здесь ненадо городить "сгароды".
Нашел косяки в своем коде. В приемнике накосячил.

Код:
'--------------------------------------------------------------------------------------------------
Zaxvat:
 Scan = Timer1                                              ' копируем значение таймера в переменную
 Timer1 = 0                                                 ' обнуляем таймер
' Incr Count
 Gosub Posilka
Return
'-------------------------------------------------------------------------------------------------
Posilka:

 If Scan < 30 Then Return                                   'Сильно короткий, значит помеха выходим
 If Scan > 500 Then                                         'Слижком длинный, значит пауза между посылками
   Moi_signal = 0
   Scan = 0
   Count = 0
   Return
 End If

 Select Case Scan
  Case 40 To 70                                             '62.5МС (1000мкС) значит 0
    Incr Count
    Bi = 0
    Goto Zapis
  Case 100 To 150                                           '125МС (2000мкС) значит 1
    Incr Count
    Bi = 1
    Goto Zapis
  Case 250 To 350                                           '312.5МС (5000мкС) значит сигнал опознования
    Count = 0
    Moi_signal = 1
 End Select
Return
'-----------------------------------------------------------------------------------------------------------
Zapis:

  If Moi_signal = 1 Then
    Select Case Count
      Case 1 To 16
        X = 16 - Count
        Nomer.x = Bi
      Case 17 To 32
        X = 32 - Count
        Tds.x = Bi
      Case 33 To 48
        X = 48 - Count
        Tdht.x = Bi
      Case 49 To 64
        X = 64 - Count
        Hdht.x = Bi
      Case 65 To 80
        X = 80 - Count
        L.x = Bi
      Case 81 To 96
        X = 96 - Count
        Crc_rx.x = Bi
    End Select
    If Count = 96 Then
     Count = 0
     Moi_signal = 0
  End If
 End If
Return
 End

Работает в протеус, и в железе. Но по радиоканалу не проверял. Пока только по проводу.)))

0

134

rom-i написал(а):

Zaxvat:
Scan = Timer1                                              ' копируем значение таймера в переменную
Timer1 = 0                                                 ' обнуляем таймер
' Incr Count
Gosub Posilka
Return

Вот это не рухнет в один прекрасный момент? В прерывании уходит в подпрограмму, а не лучше ли по флагу работать?

0

135

Niya
Да. В принципе выход здесь работать не будет. Дальше идет End If. Не мешает.

0

136

Вот это не рухнет в один прекрасный момент? В прерывании уходит в подпрограмму, а не лучше ли по флагу работать?

Как по флагу, если здесь будет бесконечная помеха? Предложи.
If Scan < 30 Then Return       'Сильно короткий, значит помеха выходим

Отредактировано rom-i (2019-01-09 21:22:30)

0

137

rom-i написал(а):

HC-12 неплохая штука, но порядочно жрет.

Если делать какое-то устройство для удаленного контроля (еtc. температура) тогда это критично.

А для игрушки, которая работает короткое время вполне себе.
На недавно сделанной системе р/у передатчик от трех АА работает уже третий месяц.
В приемнике два 18650 последовательно, уже много раз заряжались, но тут два ЭД и толпа светодиодов...

0

138

rom-i написал(а):

Как по флагу, если здесь будет бесконечная помеха? Предложи.
If Scan < 30 Then Return       'Сильно короткий, значит помеха выходим

А если помеха будет длиннее ?
Какой-нибудь тарахтун с древним ДВС недалеко остановится и все... ;)
Пылесос у соседей искрящий даст такую помеху, что приемник опупеет ! ;)

0

139

Niya написал(а):

Nord написал(а):
А приемник XY-MK-5V ?
Он самый...Пульт для робота из  них  работает, но получить данные без ошибок трудновато.

Могут быть еще антенны рассогласованы.
Много для этого не надо, чуть катушку сдавил - и вот оно...
Как с этим бороться - помогут гуру в радиосвязи... ;)

0

140

А если помеха будет длиннее ?
Какой-нибудь тарахтун с древним ДВС недалеко остановится и все... ;)
Пылесос у соседей искрящий даст такую помеху, что приемник опупеет ! ;)

От этого нет спасения. USB, LAN по проводам с ума сходят. Не говорю про радиопередачу.
В цеху проверял HC-12. Дальность тоже падает на порядки. От частотников очень сильная помеха.
Здесь все, и рассчитано на подавлении помехи несущей. Количество повторов передачи. Контрольная сумма наконец. С этим кодом уже 3 года работают часы. Небыло нареканий. Единственно его сам хотел написать.

+1

141

rom-i написал(а):

А если помеха будет длиннее ?Какой-нибудь тарахтун с древним ДВС недалеко остановится и все... Пылесос у соседей искрящий даст такую помеху, что приемник опупеет ! От этого нет спасения. USB, LAN по проводам с ума сходят. Не говорю про радиопередачу.В цеху проверял HC-12. Дальность тоже падает на порядки. От частотников очень сильная помеха.

Используем на работе HC-12 для передачи данных в шахте с ГШО из РВ оболочки, там, где кабель вывести уже негде.
Тоже частотники, как ВВ, так и НВ.
При качественном питании (очень критично) безошибочно работают на несколько метров.
С программной стороной приема сильно не изгалялись, глотает без КС и пр.
Модуль стараемся располагать как можно ближе к смотровому окошку.

0

142

Последний подход к побитному приему.
Все проще некуда.
'-------------------------------------------------------------------------------------------------
Dim Accept_data(6) As Integer                               'весь блок подлежащий приему
Dim Moi_signal As Bit : Moi_signal = 0
Dim Bi As Bit
'--------------------------------------------------------------------------------------------------
Dim Count As Byte : Count = 0
Dim Nomer As Integer At Accept_data(6) Overlay              '1 байт
Dim Tds As Integer At Accept_data(5) Overlay                '2 байт
Dim Tdht As Integer At Accept_data(4) Overlay               '3 байт
Dim Hdht As Integer At Accept_data(3) Overlay               '4 байт
Dim L As Integer At Accept_data(2) Overlay                  '5 байт
Dim Crc_rx As Integer At Accept_data(1) Overlay             '6 байт 
'--------------------------------------------------------------------------------------------------
Zaxvat:
Scan = Timer1                                              ' копируем значение таймера в переменную
Timer1 = 0                                                 ' обнуляем таймер
Gosub Posilka
Return
'-------------------------------------------------------------------------------------------------
Posilka:

If Scan < 30 Then Return                                   'Сильно короткий, значит помеха выходим
If Scan > 500 Then                                         'Слижком длинный, значит пауза между посылками
   Moi_signal = 0
   Scan = 0
   Count = 0
   Return
End If

Select Case Scan
  Case 40 To 70                                             '62.5МС (1000мкС) значит 0
    Incr Count
    Bi = 0
    Goto Zapis
  Case 100 To 150                                           '125МС (2000мкС) значит 1
    Incr Count
    Bi = 1
    Goto Zapis
  Case 250 To 350                                           '312.5МС (5000мкС) значит сигнал опознования
    Count = 0
    Moi_signal = 1
End Select
Return
'-----------------------------------------------------------------------------------------------------------
Zapis:
   If Moi_signal = 1 Then
        X = 96 - Count
        Accept_data(1).x = Bi
      If Count = 96 Then
        Count = 0
        Moi_signal = 0
      End If
   End If
Return
End

0

143

Передатчик описан выше.

0

144

rom-i написал(а):

Последний подход к побитному приему.

Работает ?

0

145

Отлично.

+1

146

Возможен ли вариант с самодельными приемниками и передатчиками? пав на 423,22 и 433,92 есть,опыт сбоки приемников есть

0

147

bulat943
Это последний вариант связи в ускоплосном режиме.
То есть телеграфия. Дальность максимальная. Передаешь точьку, пускай будет 0. Тире 1.
Это уже используют давно.
Применить мона где твоя душа пожелает

-1

148

Так то у меня собран на NRF24L01,дальность устраивает,но потребление NRF24L01 в дежурном режиме 0,9 ма не устраивает,пробовал коммутировать питание-NRF24L01 перестает работать,вернее пару-тройку дней работает а потом один-два дня нет потом случайно снова работает,питание от CP2032,травлю плату приемника и передатчика

-1

149

Чет не понял-я вам за пост не минусовал...может случайно извините,как исправить не знаю

0

150

bulat943 написал(а):

Так то у меня собран на NRF24L01,дальность устраивает,но потребление NRF24L01 в дежурном режиме 0,9 ма не устраивает

Вот тут Исследование nRF24L01 наш известный гуру ;) исследовал этот вопрос.
Читали ?

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Кто передавал температуру 18в20 по радиоканалу?