Датчик температуры
- Войдите на сайт для отправки комментариев
Чт, 12/09/2013 - 13:25
Всем привет.
Товарищи помогите разобраться. Задача в следующем нужно отображать показания температуры на показометре фирмы greddy. Еще есть драйвер двигателя на l298n но пока не могу с ним разобраться.
Пользуюсь arduino не давно. Написать скетч для считывания данных с датчика смогу. А дальше тупик.
Имеем показометр greddy ( фото ниже) arduino mega, темп. датчик, драйвер двигателя L298N
http://cxem.net/arduino/arduino70.php
посмотрите тут, можеп поможет.
а там разве шаговик стоит?
Спасибо за ответ.
Честно говоря очень сомневаюсь, что это шаговик. Потому как стрелка стремиться всегда к одной точки и фиксированного положения у нее нет. Тогда еще один вопрос как определить какой это двигатель?
Это не двигатель. http://www.grafik-plus.ru/ST_finger/st_f_31_1.htm
Ok, а почему на нем 2 обмотки?
Я еще думал, что он управляется с помощью ШИМ.
Очень хочу разобраться. Помогите пожалуйста.
а с чего решили что у него 2 обмотки?
Прозванивал))) на двух парах контактов прибор в ноль уходил.
Прозванивал))) на двух парах контактов прибор в ноль уходил.
а можно фото со стороны платы?
04813017AA We Specialize in IC semiconductor
похоже двигатель действительно шаговый.
я не могу рассмотреть, редуктор стоит или нет?
нагрузка должна быть небольшая, померяйте сколько потребляет обмотка при 5v ,
если меньше 20ма то можно на прямую к ардуино.(вроде даже до 50ма )
управление тогда будет:
pin------- 1 2 3 4 (pin образно, можно любые ))) )
1шаг - + - +
2шаг + - - +
3шаг + - + -
4шаг - + + -
как-то так
но перед этим на пол секунды в обратную сторону для обнуления, затем обработка температуры свыше 30 градусов
Не двигатель это (в общем понимании этого слова) и не шаговый. Если бы это был шаговик ,то при вращении пальцем чувствовались бы шаги и стрелка не была бы подпружинена.
Вторая обмотка нужна для компенсации усилия первой обмотки. То есть одна обмотка "тянет" стрелку в одну сторону, а другая в противоположную не смотря на то что стрелка и так подпружинена. Зачем так делается уже не помню, толи для дифференциального включения, толи для более стабильного удержания стрелки.
Так что крутить стрелку можно одной обмоткой ШИМом.
Двигатель не шаговый.
Максим, вы абсолютно правы.
На обмотках сопротивления 0
при +5 вольтах на первой обмотке стрелка перемещается на отметку в 70 градусов. При изменении подачи питания ( полярности) стрелка вращается в противоположенную сторону на отметку 150.
Подключая вторую обмотку стрелка двигается на 30 градусов по часовой стрелке и на 110 градусов против часовой стрелки.
И дальше опять тупик. По микросхеме нет даташита. Поэтому пологаться на нее, думаю, нет смысла.
Еще там стоит инвертор с тригером Шмитта
одной обмоткой все равно не получится, покрайней мере на полную шкалу
попробуйте через переменное сопротивление в качестве делителя по одной обмотке посмотреть как ведет себя стрелка
принцип того же шагового на 4 шага по 90 градусов, только шим все равно через 4 ноги слать
30 1-LOW 2-LOW 3-LOW 4-HIGH
50 1-LOW 2-HIGH 3-LOW 4-HIGH
70 1-LOW 2-HIGH 3-LOW 4-LOW
90 1-LOW 2-HIGH 3-HIGH 4-LOW
110 1-LOW 2-LOW 3-HIGH 4-LOW
130 1-HIGH 2-LOW 3-LOW 4-HIGH
150 1-HIGH 2-LOW 3-LOW 4-LOW
только через шим и с большим разрешением
от 30 до 70 34 положения на поворот стрелки на 90 градусов в самый раз
нужна реализация шага 1/34
типа этого
обмотка которая показывает на 30
и обмотка которая показывает на 70
объеденить их минусы, подать на минус а плюсовые выводы обмоток подключить так
если я прав то резистор будет крутить стрелку от 30 до 70 (зависит от резистора, с малым сопротивлением угол может быть меньше, а с очень большим вообще не работать)
Почитайте даташит на LM1819, LMS111, CS8190. Напишите название своей микросхемы, лучше чёткое фото. Вероятно, что такие стрелочные приборы применялись в автомобилях, в основном иномарках. Недавно встречал указатели несколько другого исполнения, но принцип движения стрелки тот же. http://s004.radikal.ru/i207/1309/1e/01cc1a8ce96a.jpg А это скетч, которым я исследовал этот прибор (мотор).
int p1 = 11;
int n1 = 7;
int p2 = 10;
int n2 = 6;
int del = 300;
void setup() {
pinMode(p1, OUTPUT);
pinMode(n1, OUTPUT);
pinMode(p2, OUTPUT);
pinMode(n2, OUTPUT);
digitalWrite(p1, HIGH); // исходное состояние
digitalWrite(n1, LOW);
digitalWrite(p2, LOW);
digitalWrite(n2, LOW);
}
// вращение по часовой стрелке
void loop() {
digitalWrite(p2, HIGH);
delay(del);
digitalWrite(p1, LOW);
delay(del);
digitalWrite(n1, HIGH);
delay(del);
digitalWrite(p2, LOW);
delay(del);
digitalWrite(n2, HIGH);
delay(del);
digitalWrite(n1, LOW);
delay(del);
digitalWrite(p1, HIGH);
delay(del);
digitalWrite(n2, LOW);
delay(del);
}
Денис, пробовал.
Это дополнительный прибор в автомобиль. Буду пробовать Ваш скетч. Отпишусь о результате.
есть результат? (очень интерестно)
Результат есть. Показометр работает.
Спасибо за код.
А как сделать, так что бы прибор отображал показания согласно датчику температуры.
Более детальную проработку работы мотора осуществляю по наличию свободного времени и это будет не быстро. Собственно я это делаю, чтобы в дальнейшем использовать мотор для разных "показометров". Такие моторы применяются в приборной панели авто ВАЗ 2110. Когда будет что показать, отпишусь.
Все работает. Теперь стоит следующая задача.
"Все работает. Теперь стоит следующая задача. " - а кому этот ответ?
фирма Philips
Самый верхний номер 04813017АА
Номер ниже С0021
Последний Fnr0021 A
Это для Дениса. Но если задуматься то для всех )))))
Думаю что это плата имеет аналоговый вход и с помощью имеющихся там микросхем управляет индикатором. Что бы это проверить нужно нарисовать схему, а затем уж её можно будет продумать.
а датчик температуры какой?
если цифровой то он уже сам выдает температуру нужно только написать
(программой к сожалению не помогу) (((
но
от 30 до 50 при температуре от 30 до 50 шим 1 на максимуме и 3 возрастает 2 и 4 к земле
от 50 до 70 при температуре от 50 до 70 шим 1 уменьшаем 3 на максимуме 2 и 4 к земле
от 70 до 90 при температуре от 70 до 90 1 и 4 к земле 3 на максимум 2 возрастает
и т.д.
предел темтературы в диаппазон шим по нужным пинам
данные по микросхеме искал
это все что нашел (((
04813017AA We Specialize in IC semiconductor
Да, попахивает какой то специфической микросхемой.
Вы имеете в виду нарисовать распиновку? Или нарисовать всю схему.
Максимум, что мне удалось это найти:
Контакты:
1. Питание
2. Земля
3. Кнопка установки критической температуры "warning"
4. Не определен, но заходит в микросхему
5. Лампа "memory" для записи warning
6. Лампа "warning"
7. Кнопка "memory"
8. Не определен вообще
9. Не определен вообще
10. Не определен вообще
11. Подсветка прибора +12 вольт
12. Подсветка прибора -12 вольт
Оригинальный датчик двух проводной. Думаю главное, что бы он работал в данном диапазоне температур, что на циферблате прибора.
По микросхеме я вообще ничего близкого к ней не находил
http://www.youtube.com/watch?v=YXFGt8Gyza0
посмотрите это видео там правда с резистора, но думаю поможет написать перевод
через if для 3 сегментов показометра
сейчас к сожалению нужно бежать, но если у вас не получится, завтра попробую написать )))
данные которые принимаете от 30 до 70 градусов разбейте на шим
но лучше данные в температуру а температуру в шим, так можно потом сравнивать и коректировать(IMHO)
Судя по возможному функционалу это уже тянет на микроконтроллер. Не пытались запитать? Полярность можно взять по электролитическому конденсатору - при условии что он подсоединяется к микросхеме. Возможно на плате есть стабилизатор 12 В --> 5 В . Нужно внимательно рассмотреть схему.
Есть успехи???
може кто подскажет какой формулой подкоректировать чтоб точка направления шла по дуге ?
Успехов пока ни каких. Только сейчас сяду за код.
По Вашей формуле пока подсказать не смогу. Голова другим забита. Думаю надо делать пропорцию. Ток должен уменьшаться на первой катушке и увеличиваться на второй согласно изменению плавающей величины. Впринцепи тоже самое ждет и меня. С написанием скетчей у меня туговато. Сделайте условие. Если N больше X то ....
Присмотритесь к графику "Function Generator Output Voltage vs. Degrees of Deflection " (стр.3) описания микросхемы CS8190. Думаю Вам надо генеривовать именно такие кривые напряжения на обмотках.
похоже нужно через прямоугольный треугольник
Это все хорошо но как быть с промежуточными значениями 31,32,33 и т.д.
Пробовал воспользоваться библиотекой Servo. Результат есть только. Но слабый.
Нужен даташит на сенсор. А у меня сенсор без маркировки.
Как Ваши результаты с шаговым двигателем?
не пинайте сильно, то что придумал извоял для вашего показометра
проверить особо не на чем, но по светодиодам вроде работает.
Денис и Генадий спасибо Вам за идею и подсказку
Код написал свой. Выложу чуть позже. Теперь стоит задача переключения между двумя катушками. Потому что показания идут до 70 градусов, а дальше должна включаться вторая. Думаю попробовать осуществить всю идею через прерывания. Только вот не знаю как написать код т.к. тактовую кнопку использовать не разумно. Попробую написать через условия if ... else.
Как думаете будет работать?
в моем коде, вроде как сразу две катушки работают.
К сожалению Ваш код не работает. Я не понять почему.
Посмотрите пожайлуйста мой код.
Проблема в том, что после 70 градусов цельсия не просходит изменения катушек.
Нужно ли добавлять такловую кнопку
не совсем могу понять ваш код
попробуйте описать что должно происходить.
и зачем мапили всю шкалу?
я думаю мой скетч не работает из-за не соответствий значений.
скиньте пожалуйста показания вашего датчика(точнее показания при 30, 70, 110, 150 градусах )и я подправлю свой скетч
и напишите контакты по цветам на 30 и 70 градусов с полярностью по цветам.
и скажите какой датчик используете?
и вот эта чать точно так должна быть
if (sensPIN >= 100) // подключение катушки до 70 градусов
{
selectedPIN = redPIN;
}
else
{
greenPIN = 0;
}
или
if (sensPIN >= 100) // подключение катушки до 70 градусов
{
selectedPIN = redPIN;
}
else
{
selectedPIN = greenPIN;
}
и что показывает сериал (проходит через отметку 100?)