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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Использование модуля SIM800l


Использование модуля SIM800l

Сообщений 91 страница 120 из 224

91

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

Chr(176) к сожалению не работает.
В одной таблице 176 в другой 167 в смс приходит собака и знак параграфа.


Модуль не передаёт или МК, может модуль не понимает расширенную кодировку ?

В МК всё работает

Val_str = Chr(176)

  Val_byte = Asc( "°")
  Print Val_byte

  Print "°"
  Print Val_str
  Print Chr(176)
  Print = Chr(&Hb0)

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

Вопрос по АЦП. Когда конфигурирую Avcc это значит не 5,00 Вольт = 1023, а именно напряжение питания?
Вот у меня блок питания выдает 5,1 В

АЦП измеряет относительно напряжения на Avcc MK

0

92

С АЦП запутался, мне нужно измерять напряжение до 10 Вольт, но запас для надежности то же нужен.
Собираю делитель на 2,5 (при 12 вольтах на входе на выходе 4.8 Вольт) при таком условии почему то нет линейности.
расчетные данные
10 в -> 4,00 в
  5 в->  2,00 в
эмпирические
10 в -> 4,00 в -> что насчитает АЦП  800 (5/1023 = 0,005в)
  5 В -> 2,20 в -> Что насчитает АЦП 440 (а должно быть 400)

Почему так?
http://sd.uploads.ru/t/yWILt.jpg

0

93

Не правильно подобрал сопротивления, при 12 в на входе 4,33 на выходе.....

0

94

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

Не правильно подобрал сопротивления, при 12 в на входе 4,33 на выходе.....


Исходник для 12 вольт, Rgnd=10k, Rin=13k+1k

$regfile = "m328pdef.dat"
$crystal = 1000000
$hwstack = 128
$swstack = 128
$framesize = 128

$baud = 4800

Config Adc = Single , Prescaler = 128 , Reference = Avcc

Dim Data_adc_word As Word
Dim Data_adc_sin As Single

Do

  Data_adc_word = Getadc(0)

  Data_adc_sin = Data_adc_word * 0.01173

Loop
End

0

95

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

Собираю делитель на 2,5 (при 12 вольтах на входе на выходе 4.8 Вольт) при таком условии почему то нет линейности.

Уберите стабилитрон и конденсатор.

0

96

1. АЦП, моя ошибка в попытке защитить порт стабилитроном, без него все отлично работает.
http://sg.uploads.ru/t/gS78W.jpg
2. Знак градуса.
отправляю Print "°" в смс приходит знак @
отправляю Print Chr(248) в смс приходит знак диаметра(перечеркнутый под углом кружек)

Отредактировано boida (2019-06-01 23:32:00)

0

97

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

1. АЦП, моя ошибка в попытке защитить порт стабилитроном, без него все отлично работает


Стабилитрон на 5,6в + резюк 1к на ногу ацп

http://s7.uploads.ru/t/smZvh.jpg

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

2. Знак градуса.
отправляю Print "°" в смс приходит знак @
отправляю Print Chr(248) в смс приходит знак диаметра(перечеркнутый под углом кружек)

Значит в кодировке нет символа или у него другой код

0

98

Открою страшный секрет 7-битной кодировки:
GSM alphabet

http://sg.uploads.ru/t/a2wu8.jpg

0

99

sasha_1973
А можно саму формулу по какой расчет идет? Про 96 пост.
Data_adc_sin = Data_adc_word * 0.01173 эта строчка меня заинтересовала.
Делаю по простому. Но заметил нелинейность на границах измерения. Что бы лишнего не задавать тема немного меняется. Измерить собственное напряжение питания от аккума Li-ion 3.7V.
Исользую Tiny84. Внутреннее образцовое напряжение 1.1В. Нужно мерить максимально грубо 4.2В, минимум 3.2В.
Получается 1023 - 1.1В. Что бы проще считать делителем делителем подгоняю при 4.3В на вход идет 1В.
В начале подстроечник, потом SMD резюки.
Data_adc_word = Data_adc_word / 23 грубо 1023/ 4.3=23
Дальше то, что делает нелинейным.
Data_adc_word = Data_adc_word - 25 где 25 вогнать переменную в реальные цифры. И это она уже деленная на 23.
Вот, и вопрос. Как правильно рассчитать коеэффицэнт деления?
У Вас  он 0.01173.

0

100

(12/5)*(5/1023)=~2.4*0.00488=~0.0117

АЦП AVR имеет нелинейность на краях диапазона.

0

101

Если Вы питаетесь от Li-ion, проще и точнее мерять avcc, в теме про исследования есть примеры с объяснениями и ссылками на документацию

0

102

sasha_1973
(12/5)*(5/1023)=~2.4*0.00488=~0.0117
Если бы была такая погрешнось, небыло вопросов. При 4.00В делаю переменную равной 400.
В итоге получаю при 3.50В переменная АЦП 3.2В. Хороше, что врет в нужную сторону. Занижает. Не пропустишь нужность зарядки.

Если Вы питаетесь от Li-ion, проще и точнее мерять avcc, в теме про исследования есть примеры с объяснениями и ссылками на документацию

Сдесь не про вопрос.
Вопрос в измерении собственного питания.

0

103

sasha_1973
Избавляюсь от проводов. Ставлю радиодатчики. В посылке идет напряжение питания. Лучше чем аккумы от сотиков питание не нашел. Хватает очень на долго. За 4 месяца испытаний аккумы сели примерно 0.2В. Результат отличный. Передача идет каждые 6 минут, остальное    Powerdown .
Вот, и возник вопрос в более точном измерении собственного питания.

Отредактировано rom-i (2019-06-02 16:50:01)

0

104

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

Вот, и возник вопрос в более точном измерении собственного питания.


Здесь

0

105

Дописался до 95% в М8, вопрос будет ли стабильно работать программа или лучше перейти на М168?

0

106

Удобнее будет на M328 уйти.
Цоколевка совпадает на 100%, если в DIP ;)

Отредактировано Nord (2019-06-02 20:27:47)

0

107

Nord
Да в дипе, а разве цоколека в М168 другая?

+1

108

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

Да в дипе, а разве цоколевка в М168 другая?

Я их не пробовал... ;)
У меня используемая линейка для этого типа - Mega8, Mega48, Mega328...
А все даташиты в голове держать смысла нет... ;)

Отредактировано Nord (2019-06-02 21:16:09)

0

109

В чип и дип М168 в два раза дороже M328 поэтому лучше запас побольше ))))

Отредактировано boida (2019-06-02 22:05:34)

0

110

boida
Стои на работе система контроля. Собрана на мега8. Все отлично работало кроме USSD. Ответ приходил в ACS2. Дома делаю контролер котла но на мега328. Решил из ACS2 взять нужные цифры, на форуме появилась эта тема. Если сразу брать по 4 символа начиная с нужного, иногда получалась колбаса. Оказалось ответ нормальный +CUSD 0. Пишу попамяти, на суть не повлияет. Цифры начинаються с 12 символа. А иногда ответ +CUSD 1, добавляються 2 пробела. Символы начинаються с 14. Друг предложил сдвигать в начале по одному символу до первого совпадения с цифрой, дальше по 4. Отлично заработала программа на мега328. Вышел из отпуска на работу решил переписать программу на мега8. Перенес подпрограмму баланс, и в ответ колбаса. Вместо нормального ответа части hex кода. Откуда они могут взяться, если в таблице Case их нет вообще. Начал выводить на терминал все, что получаю при сдвиге строки. Оказалось переменные перехлестываються. Тоже мега8 забита на 97%. И программа начинала черезь 4 символа начинать брать когда ни попадя. Но сдесь помогло добавить в таблицу Case одну строку.
Case Else : Cifra = ""

Код:
'========Баланс==================================================================================
Баланс:
    Sim = 1
    Val_numeric = 1
    Otvet = ""
    For Bal = 0 To 60
     Sim_str = Mid(sk , Sim , 4)
    Select Case Sim_str
      Case "0030" : Cifra = "0"
      Case "0031" : Cifra = "1"
      Case "0032" : Cifra = "2"
      Case "0033" : Cifra = "3"
      Case "0034" : Cifra = "4"
      Case "0035" : Cifra = "5"
      Case "0036" : Cifra = "6"
      Case "0037" : Cifra = "7"
      Case "0038" : Cifra = "8"
      Case "0039" : Cifra = "9"
      Case "002E" : Cifra = "."
      Case "002C" : Cifra = "."
      Case "0070" : Cifra = "p"
      Case Else : Cifra = ""
    End Select
      If Cifra <> "" Then Val_numeric = 4
        Otvet = Otvet + Cifra
      If Cifra = "p" Then Bal = 60
      Sim = Sim + Val_numeric
      Cifra = ""
    Next Bal

    Otvet = "Balans:" + Otvet
  Gosub Sendsms

Return

0

111

sasha_1973
В вашей программе для меня сложновато разобраться. Тем более вывода Aref у Tiny84 нет. Если можно чего подкорректировать в измерении АЦП, вот весь код.

Скрытый текст:

Для просмотра скрытого текста - войдите или зарегистрируйтесь.

0

112

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

Тем более вывода Aref у Tiny84 нет.

PORTA.0 - ADC0/AREF/PCINT0
В DIP/SOIC - ножка 13, в QFN/MLF - ножка 5

0

113

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

Но сдесь помогло добавить в таблицу Case одну строку.Case Else : Cifra = ""

Переменная Cifra не очищается и если ни одно из условий не совпадет, результат будет предыдущим значением.

0

114

Nord
Но сдесь он будет активным если использовать внешний источник образцового питания. В мегах если использовать
Config Adc = Single , Prescaler = Auto , Reference = Internal или Avcc на Aref выводится внутреннее образцовое напряжение 2.54В, или напряжение питания AVCC. Вешается кондюк 0.1мкФ. Который Александр в своей программе заряжает, разряжает согласно даташиту. Но для меня его программы сильно сложные. Половина на асме, который вообще не знаю.

0

115

Пётр
Это понятно, что предидущее значение. По суте оно, и должно быть Cifra = "" пока не совпадет с табличным условием. И значений в таблице Cifra = "А", Cifra = "F" вообще нет. Но в строке ответа они появлялись.

Отредактировано rom-i (2019-06-03 12:43:46)

0

116

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

Но здесь он будет активным если использовать внешний источник образцового питания.

Перевод из даташита (п.16.2):

Внутреннее опорное напряжение номинально 1.1V обеспечивается на кристалле. В качестве альтернативы, VCC может быть использован в качестве опорного напряжения для одного состава каналов. Существует также возможность использовать внешний источник опорного напряжения и выключение внутреннего источника опорного напряжения.

Как, собственно и в Мегах... ;)

0

117

Nord
Говорим про одно, и тоже но по разному. Если включу внешний источник, Aref станет входом для его подключения.
PA0, ADC0 бросят свое существование, или наоборот. А в мегах8, 328 Aref всегда Aref. Вот в чем разница.

0

118

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

По суте оно, и должно быть Cifra = ""

В коде не видно чтобы перед циклом переменная обнулялась.

0

119

Интересное дело...
Рабочая программа для М8 не работает на М328.
Readfirstsms:
не может прочитать смс
и скорее всего не работает
Getline

0

120

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

Говорим про одно, и тоже но по разному.

Выясняется, что практически - да...
Только изначально прозвучало:

Тем более вывода Aref у Tiny84 нет

Вот пропустили слово "отдельного" и фраза как-то сразу по-другому зазвучала... ;)
Отсюда и каша... ;)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Использование модуля SIM800l