Может завтра ещё пересмотрю исходник, сегодня уже нет времени
показометр U/I в Bascom-AVR
если я буду использовать константы с плавающей точкой, будет ни есть гуд, у меня точка на индикаторах фиксированная, ведь не ЖК использую, приходится работать с целыми или весь исходник переписывать.
Может завтра ещё пересмотрю исходник, сегодня уже нет времени
Может завтра ещё пересмотрю исходник, сегодня уже нет времени
- Реклама
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Зачем переписывать весь код?
Достаточно изменить код чтения из АЦП.
Результат можно получить целочисленным.
Достаточно изменить код чтения из АЦП.
Результат можно получить целочисленным.
Код: Выделить всё
Const Aref = 2.56 ' Напряжение ИОН.
Config Adc = Single , Prescaler = 128 , Reference = Internal ' Внутренний ИОН.
Dim x As Word
Dim y As Single
x = Getadc(0) ' Опрос канала 0 АЦП.
y = Aref * x
y = y / 1024
y = y * 1000 ' Результат в милливольтах на входе АЦП.
x = y ' В переменной 'x' целочисленный результат в милливольтах.Попробовал Ваш код, точно такие же значения получаются как и у меня.Достаточно изменить код чтения из АЦП.
Просто попробуйте закоментировать этот кусок
Volt_1 = Aref * Volt
Volt_1 = Volt_1 / 1024
Volt_1 = Volt_1 * 1000
Volt_1 = Volt
результат одинаков, что с ним что без него, и чтобы выйти на реальные значения в вольтах adc1, надо разделить на 2, как у меня и было изначально.
Пробовал в протеусе, но в железе результат преобразования я уверен будет тот же, просто сейчас работа, некогда на макетке попробовать, работаю два через два с восьми до восьми.
- Вложения
-
- Forum.zip
- (29.4 КБ) 111 скачиваний
У ТС всё хорошо. Пожелаем ему успехов.
Последний раз редактировалось pcb Вт окт 20, 2015 08:48:41, всего редактировалось 1 раз.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
А ето чавопользуйтесь диф включением каналов
А у меня 3 вольта в диапазоне 10-50вольт, не хило правда?что бы ни делали, у аврки как было 1024 отсчета так и останется, 20 В/1024 = ~20 мВ в идеальном случае, а в действительности будет 8-9 бит, что эквивалентно 40мВ.
И по поводу температуры измерительные цепи не геются у меня да и контроллер тоже
- Реклама
Я не знаю про какие 3 В идёт речь.SolderC писал(а): А у меня 3 вольта в диапазоне 10-50вольт, не хило правда?
Из этого следует, что моя помощь вам не нужна.SolderC писал(а): И по поводу температуры измерительные цепи не геются у меня да и контроллер тоже
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Не удивительно с учетом ошибки в коде.SolderC писал(а):результат одинаков, что с ним что без него
В последней строке должно быть.SolderC писал(а):Volt_1 = Aref * Volt
Volt_1 = Volt_1 / 1024
Volt_1 = Volt_1 * 1000
Volt_1 = Volt
Код: Выделить всё
Volt = Volt_1Во бла
ща попробуем
Не работает, подаю напряжение 0-8В на индикаторах 0В, как только превышает 8,9В - сразу 9,99А 50,0В
Скажите, а смещение нуля АЦП может быть причиной нелинейности?
ща попробуем
Не работает, подаю напряжение 0-8В на индикаторах 0В, как только превышает 8,9В - сразу 9,99А 50,0В
Скажите, а смещение нуля АЦП может быть причиной нелинейности?
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
В коде объявление переменной.SolderC писал(а):Не работает, подаю напряжение 0-8В на индикаторах 0В, как только превышает 8,9В - сразу 9,99А 50,0В
Код: Выделить всё
Dim Volt_1 As IntegerСпасибо, что разжёвываете и извините за невнимательность, в протеусе работает, завтра опробую в железе.Мурик писал(а):В коде объявление переменной.SolderC писал(а):Не работает, подаю напряжение 0-8В на индикаторах 0В, как только превышает 8,9В - сразу 9,99А 50,0Ва должно быть Single.Код: Выделить всё
Dim Volt_1 As Integer
Спасибо за внимание, устранено, дело было в бракованной mega8
Код изначально был верным.
End
Код изначально был верным.
End


