-
Считывание напряжения и управление напряжением
Всем привет!
Закупили для научной лаборатории два контроллера arDuino Nano V.7 https://duino.ru/arduino.html
Один контролер должен считать напряжение от 0 до 5 Вольт, и в программе на PC необходимо записать это значение во Float переменную.
Вторым контроллером необходимо из программы на PC подать напряжение от 0 до 5 Вольт.
Подскажите, пожалуйста, что почитать по этой теме. Программа на PC может быть написана на MATLAB или C++. Покажите примеры программ как обращаться с контроллером.
Спасибо!
-
Re: Считывание напряжения и управление напряжением
на самом деле эти две простенькие задачки может выполнять одна Arduino
Пример вольтметра
Чтобы на ШИМ выходе ардуины (D9) получить напряжение Vcc/2
Достаточно вот такого кода
Код:
void setup()
{
pinMode(9, OUTPUT);
analogWrite(9, 128);
}
void loop()
{
}
Но что бы получить идеальное постоянное напряжение понадобится RC фильтр
-
Re: Считывание напряжения и управление напряжением
Помогите пожалуйста с программкой, очень нужно для нужд российской науки.
Есть контроллер, с помощью него нужно управлять системой:
- на одну пару контактов нужно уметь подавать напряжение от 0 до +1.2 Вольт
- на вторую пару контактов нужно уметь подавать напряжение от 0 до +5.0 Вольт
- с третьей пары нужно снять показание тока от 0 до 0.1 милиАмера (ток постоянный, снимается с фотоумножителей Hamamatsu)
- с четвёртой пары нужно снять показание напряжения от 0 до + 5.0 Вольт (кстати, а до 10 Вольт можно снимать значения?)
Контроллер подключен к PC как COM порт. Какими командами из внешней программы на PC (пусть это будет С++ или MATLAB) нужно задавать напряжение и считывать напряжение и ток?
Спасибо!
-
Re: Считывание напряжения и управление напряжением
К сожалению у меня не хватает времени свои проекты завершить.
-
Re: Считывание напряжения и управление напряжением
Подскажите с этой темой, пожалуйста: на пару контактов нужно уметь подавать напряжение от 0 до +5.0 Вольт (и на другую пару от 0 до +1.2 Вольта)
Контроллер: Nano (ATMEGA 328, CH340)
-
Re: Считывание напряжения и управление напряжением
А в чем вопрос я не понял?
-
Re: Считывание напряжения и управление напряжением
Начну с простых вопросов, пожалуй.
Не сразу всё мне понятно.
1) analogWrite(9, 2.5 * (255.0 / 5.0)); // D9
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
Если подключить щуп A0 к D9 (где я ожидаю увидеть 2.5 вольта), я вижу широтно-импульсную модуляцию. И из неё мне нужно сгладить эту ШИМ до нужных мне 2.5 Вольт. Вопрос как? Здесь пишут про RC фильтр: http://fablabs.ru/wiki/index.php/RC-...82%D0%BE%D1%82
Но супергладко у них тоже не получается. Как мне быть?
2) Я меряю влоб напряжение между щупами A0 и AGRN, вставляю между ними батарейку на 1.5 Вольт, и вижу что 1.5 Вольт не показывает, я вижу только шум. Почему?
-
Re: Считывание напряжения и управление напряжением
Цитата:
Но супергладко у них тоже не получается. Как мне быть?
П фильтр с применением электролита и керамики поможет сгладить все пульсации
Цитата:
Я меряю влоб напряжение между щупами A0 и AGRN, вставляю между ними батарейку на 1.5 Вольт, и вижу что 1.5 Вольт не показывает, я вижу только шум. Почему?
А что такое AGRN? Меряете чем? Если осциллографом, то нужно перевести вход на измерение постоянки
-
Re: Считывание напряжения и управление напряжением
Про фильтр я не понял мысль. Покупать возможности у нас нет. Как его самому смастерить для сглаживания?
AGRN - это земля на стороне аналоговой стороны A. Т.е. батарейку я меряю между щупами A0 и AGRN. Программно нужно analogRead(A0) поменять?
-
Re: Считывание напряжения и управление напряжением
Цитата:
Про фильтр я не понял мысль. Покупать возможности у нас нет.
Я Вам и не предлагал покупать
Цитата:
AGRN - это земля на стороне аналоговой стороны A. Т.е. батарейку я меряю между щупами A0 и AGRN.
Смотрю на ардуину нано вер.7 и в упор не вижу такого контакта
-
Re: Считывание напряжения и управление напряжением
А достаточно ли будет RC фильтра из этой статьи: http://fablabs.ru/wiki/index.php/%D0%A4%D0%9D%D0%A7
Пишут что два последовательных RC фильтра решают задачу.
И вопрос еще, подключать фильтр вот так: https://monosnap.com/file/NiBoH6kMXp...wypyaFQbJDKkpz ?
Можно потом выход с фильтра померять своей же ардуинкой через выходы A0 - AGND? Покажет нужные мне 2.5 Вольта, заданные в
PHP код:
analogWrite(9, 2.5 * (255.0 / 5.0)); // D9
?
По две земли у них, с цифровой стороны DGND (всегда ноль цифровой выдаёт) и с аналоговой AGND (шум мусорный показывает, что с ним делать не понятно...): https://monosnap.com/file/Uuy1j6MDYR...FnzgU2Zfjxtiiy
Т.е. если я правильно понимаю, то написав вот так:
PHP код:
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
я между щупами AGND и A0 меряю вольтаж как обычным вольтметром. Если не прав, то поправьте пожалуйста.
-
Re: Считывание напряжения и управление напряжением
Думаю что 2-х звеньев будет достаточно, если не хватит можно всегда добавить
Цитата:
Можно потом выход с фильтра померять своей же ардуинкой через выходы A0 - AGND?
Можно
Цитата:
я между щупами AGND и A0 меряю вольтаж как обычным вольтметром
Еще бы понять что в вашем понимании обычный вольтметр
-
Re: Считывание напряжения и управление напряжением
Но вопросы у меня не закончились.
1) Если записать вот так:
PHP код:
analogWrite(9, 4.0 * (255.0 / 5.0)); // D9
то я на выводах DGND и D9 получу цифровую ШИМ, который нужно пропускать через RC-контур что бы получить и выровнять итоговый аналоговый сигнал. С этим понятно всё.
А если я запишу:
PHP код:
analogWrite(A5, 4.0 * (255.0 / 5.0)); // A5
то я на выводах DGND и A5 получу сразу аналоговых 4.0 Вольта. В чем разница? Нужно ли второй сигнал пропускать через что то? Поясните разницу.
2) В чем разница выводов заземлений DGND и AGND: https://monosnap.com/file/Uuy1j6MDYR...FnzgU2Zfjxtiiy? Почему на DGND всегда 0, а на AGND - всегда шум? Получается что через A0 - AGND я ничего не намеряю.
Вольтмер для меня - это и есть A0 - AGND:
PHP код:
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
Но если шум, то получается что через AGND нельзя ничего измерять. Почему?
3) Рассмотрим всё тот же кусок кода:
PHP код:
analogWrite(A5, 4.0 * (255.0 / 5.0)); // A5
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
Смотрим внешним мультиметром выводы DGND и A5 - видим 4.0 Вольта. Всё правильно типа.
Закоротим A5 и A0, посмотрим сигнал собственным ардуишным вольтметром (на DGND и A0) - и увидим что показывает 5.0 Вольт: https://monosnap.com/file/JPZmUquK0v...ckCoP3geL366g3
Почему такая фигня?!
-
Re: Считывание напряжения и управление напряжением
Цитата:
то я на выводах DGND и A5 получу сразу аналоговых 4.0 Вольта.
1-С чего бы?
2-Да ни какой, они на плате все равно объединены
3-закорачивать входы не стоит, они гальванически не развязаны
-
Re: Считывание напряжения и управление напряжением
Блин.
1) В чем разница тогда:
цифрового:
PHP код:
analogWrite(9, 4.0 * (255.0 / 5.0)); // D9
и аналогового:
PHP код:
analogWrite(A5, 4.0 * (255.0 / 5.0)); // A5
В первом случае будет ШИМ, а во втором случае тогда что?
2) Понял, значит кривая плата попалась
3) Как тогда одним контактом считать данные со второго контакта не замыкая их. Я же сигнал хочу переправить и посмотреть его.
-
Re: Считывание напряжения и управление напряжением
A5 это вход, ничего не будет
К тому же ШИМ у Наны всего на 6 пинах
2 - плата тут ни при чем, есть такое явление как разность потенциалов
3 - ни как, так как А5 - аналоговый вход
-
Re: Считывание напряжения и управление напряжением
Всем спасибо! Спаял RC ФНЧ, получил свои чистые 4 Вольта. Теперь следующая задачка: блок питания фотоумножителя выдаёт на двух выходах -800 Вольт и 0. Вопрос - как померять отрицательное напряжение? Да еще не маленькое...
-
Re: Считывание напряжения и управление напряжением
Тестером, у меня например тестер до 1000 в может измерять
-
Re: Считывание напряжения и управление напряжением
А у меня до 600 Вольт. Я делитель напряжения спаяю. Но как мерять отрицательное напряжение?
-
Re: Считывание напряжения и управление напряжением
Смотрите, вот мои мысли.
Ардуиной мы через RC ФНЧ подаём 3.5 Вольт управляющего напряжения, на выходе блока питания получаем 800 Вольт и 0.6 mA, сюдя по схемам подключения:
https://monosnap.com/file/cSgbEpJc7t...vvrmg0CKwBmNCl
https://monosnap.com/file/es18pt47y0...rIksySgLufZacg
Далее я через делитель напряжения понижаю вольтаж с 0-1000 Вольт до 0-500 Вольт и меряю его через мультиметр (он до 600 Вольт принимает, поэтому 400 я померяю). Для теста, что бы увидеть что корректно выдаётся напряжение. Вопрос такой: 800 Вольт и 0.6 mA - опасны? Если вдруг дотронусь случайно...
Далее подключаем к выходам блока питания 800 Вольт и 0.6 mA сам ФЭУ по схеме: https://monosnap.com/file/JENNa7Nmce...MoEEwSMz18FuW9 Тут только в сокет воткнуть.
Далее с ФЭУ нужно Ардуиной замерять выходной ток: https://monosnap.com/file/WH8wtrVCfq...jxVQPYeDu6X7qV
Максимум 0.1 mA и 800 Вольт.
Нужно сделать инвертор с -800 Вольт до +5 Вольт. Варианта два: такая схема через делитель напряжения: https://monosnap.com/file/X4LmbSSh5k...OqaqOsBBbBJc9A
И такая через инвертирующий операционный усилитель: https://monosnap.com/file/DPB9wVKyai...3Yao1rH2hXtrKi
Естественно резисторы нужно подбирать по ватности, что бы выдержали.
Вопрос - в какой схеме точность будет выше?
-
Re: Считывание напряжения и управление напряжением
Цитата:
Сообщение от
SpaceQuester
А у меня до 600 Вольт. Я делитель напряжения спаяю. Но как мерять отрицательное напряжение?
Так же как и положительное, меняете местами GND и DATA
-
Вложений: 1
Re: Считывание напряжения и управление напряжением
Цитата:
Сообщение от
SpaceQuester
Вопрос такой: 800 Вольт и 0.6 mA - опасны? Если вдруг дотронусь случайно...
нет
Кривая схема, ардуинка будет светится синим пламенем
Естественно резисторы нужно подбирать по ватности, что бы выдержали.
Вопрос - в какой схеме точность будет выше?[/QUOTE]
Зачем Вам ОУ . Его нужно использовать для усиления слабых значений и увеличения тем самым чувствительности
Вот Вас схема делителя, резисторы я не рассчитывал, взял Ваши значения
Вложение 18826
-
Re: Считывание напряжения и управление напряжением
А чем разница схем делителя (твоей и моей на черном фоне)? По идее одно и тоже. ОУ нужен в качестве инвертора, не более того.
-
Re: Считывание напряжения и управление напряжением
Ну если нет разницы то тогда подключай по своей схеме, потом сообщи что получилось
-
Re: Считывание напряжения и управление напряжением
Подскажите пожалуйста, с ОУ. Почему то я туплю с ним.
Итак, есть ОУ: http://www.chipdip.ru/product/lm324n/
Есть напряжение -2.4 Вольта. Как мне его подключить что бы выдало зеркальное значение, т.е. +2.4 Вольта?
Делаю так, пока без резисторов: плюс ОУ в землю, на минус ОУ подаю -2.4 В, минус подключаю к выходу, с выхода ОУ ожидаю увидеть +2.4 В. Но вижу -1 Вольт. Подаю напряжение питания на ОУ +12 Вольт, вижу на выходе ОУ +10 Вольт. И совсем не понимаю как он работает. Он же инвертировать должен...
Если втыкаю разисторы по 100 Ом, то все равно не инверит.
Как его применить в быту? Какие резисторы нужны ему? (По формуле, они влияют на коэффициент усиления только.) А напряжение питания ему нужно?
Спасибо.
Вопросы примитивные тут: https://monosnap.com/file/lcC0r7urX6...HIRLN3CCjCiQ2m
-
Re: Считывание напряжения и управление напряжением
напряжение питания нужно. резисторы я б по 10-20кОм поставил. схема вроде похожа на правду
-
Re: Считывание напряжения и управление напряжением
Вот моя рабочая схема инвертора с -800 на +5 Вольт: https://monosnap.com/file/Xj5LhmloYF...zyeZZgdX2jukoF
Питание ОУ живёт своей жизнью.
Но мне бы хотелось получить однополярный инвертор. Пока не получается... А то что в книжках написано - не работает.
-
Вложений: 1
Re: Считывание напряжения и управление напряжением
Заработало так как мне нужно. Всем спасибо за терпение!
Вложение 18841