Прежде всего, выкладываю два файла. Программа ComSpy позволит отладить обмен с МК по COM-порту. В другом файле - её исходники под C++Builder, пригодятся для создания своего приложения. Попробую найти подходящий исходник для МК, но попозже.
PS. Два не получилось, exe тяжеловат для выкладывания. Ну да ничего, скомпилируете сами. Ну или, как уже было сказано, можно отлаживать любой терминальной программой. Хотя мне этой удобнее.
Что касается отладки схемы... Как будет собрана, надо проверить, какое напряжение будет на выходе опера при изменении температуры в заданных пределах. Должно быть по максимуму: от почти 0 до почти +5 вольт. Если нет в распоряжении таких температур - эмулировать датчик подходящими резисторами. Смотреть выход не только вольтметром, но и осциллографом - проверить, что нет возбужления, шумов, фона и т.п. гадости.
Для расчёта ОУ (и не только) очень советую найти книгу "Аналоговые интерфейсы микроконтроллеров" (Стюарт Болл)
Всю читать не обязательно, там есть отдельная глава про датчики. Расписаны все грабли работы с аналоговыми датчиками, все способы и расчёты, как нормализовать выходное напряжение датчиков для входа АЦП.
Во всяком случае несколько часов курения этой книжки + простой расчет позволил добиться того, что собранная схема начала работать сразу с такой точностью, о которой я сначала и не мечтал.
Самая свежая информация. Только что сообщили, что мой девайс (измеряет по 8 каналам постоянное и переменное - true RMS, частотой 20... 800 Гц напряжение до 250 В, приведённая погрешность 1%) успешно прошёл испытания на утверждение типа в Уралтесте, в погрешность уложился с хорошим запасом. И как я обошёлся без этой книги...
ploop писал(а):Для расчёта ОУ (и не только) очень советую найти книгу "Аналоговые интерфейсы микроконтроллеров" (Стюарт Болл)
Всю читать не обязательно, там есть отдельная глава про датчики. Расписаны все грабли работы с аналоговыми датчиками, все способы и расчёты, как нормализовать выходное напряжение датчиков для входа АЦП.
Во всяком случае несколько часов курения этой книжки + простой расчет позволил добиться того, что собранная схема начала работать сразу с такой точностью, о которой я сначала и не мечтал.
Книга просто супер! Прочитал раздел про терморезистивный датчик, вник... в общем поменял мост на делитель напряжения.. расчитал ОУ и получил нужные напряжения, при 700 Ом = на выходе 4,5В, при 319 Ом = 0,48 В.. Вот только с кондёрами на питании меги не разобрался (в питание делителя кандёр не тыкал) такое напряжение и должно быть? И так, как у меня датчик будет по проводу подключаться к плате, то нужно учитывать сопротивление провода? Второй резистор подстроечный брать?
HEX файл левый выбрал, чтоб запустить эмулятор..
Вылаживаю скрин и проект в протеусе.
"Терморезистор" - R1
Rovez писал(а):Книга просто супер! Прочитал раздел про терморезистивный датчик, вник... в общем поменял мост на делитель напряжения.. расчитал ОУ и получил нужные напряжения, при 700 Ом = на выходе 4,5В, при 319 Ом = 0,48 В.. Вот только с кондёрами на питании меги не разобрался (в питание делителя кандёр не тыкал) такое напряжение и должно быть? И так, как у меня датчик будет по проводу подключаться к плате, то нужно учитывать сопротивление провода? Второй резистор подстроечный брать?
HEX файл левый выбрал, чтоб запустить эмулятор..
Вылаживаю скрин и проект в протеусе.
"Терморезистор" - R1
Если внимательно посмотреть на прошлую схему, то там тоже можно увидеть не мост, а самый обычный делитель. Вторая половинка моста - это всего лишь "располовиненный" резистор обратной связи неинвертирующего усилителя, одна половинка которого подключена к общему, а другая - к питанию. Так нередко делают при однополярном питании.
Теперь, раз уж есть желание поменять схему, я подскажу ещё один вариант. Сейчас зависимость напряжения делителя от сопротивления датчика, а значит, от его температуры довольно нелинейная. Предлагаю поправить ситуацию. Если в схеме инвертирующего усилителя датчик включить вместо резистора обратной связи, то выход этого усилителя станет пропорционален его сопротивлению, а если сопротивление линейно зависит от температуры (вероятно, в данном случае это более-менее так), то и выход будет пропорционален температуре. Такой подход может уменьшить проблемы при программировании меги - возможно, не надо будет заниматься линеаризацией и терять точность. Если в последней схеме датчик температуры R3, остальные постоянные - то так оно и будет. Рекомендую обдумать это. Жаль, я сразу не догадался предложить это.
Сопротивление проводов термодатчика, конечно, влияет на точность, но при небольшой длине проводов это будет незаметно. Если провода длинные - их надо бы выполнить экранированной витой парой, а то можно и помех нахватать. Конечно, это температура - процесс небыстрый, легко фильтруется. Но проследить надо. А подстроечников никаких не надо, только ухудшат. Я подстроечниками стараюсь не пользоваться вовсе, лучше рассчитать поточнее.
А что непонятно с конденсаторами в питании меги? Их просто надо поставить - по одному на каждую питающую ногу.
Програмная часть МК.. просто до этого никогда не работал с МК. Да и в програмировании я не силён... Сидеть щас учиться и самому пробывать писать программу - увы времени нет
Пока - просто для иллюстрации того, что есть прогоамма для МК. Тут нет работы с последовательным портом (UART), однако кое-что можно увидеть и тут. Эта программа была в некотором роде учебная - человек, который её отлаживал на устройстве, занимался этим первый раз в жизни, а я ему давал ценные указания по емылу.
Я бы все же использовал в качестве операционника AD620. У него можно с достаточной точностью задать усиление, и в добавок ко всему это инструментальный усилитель. Если стабилизировать ток через термометр сопротивления, включить его по 4-х проводной схеме, то влияния сопротивления проводов не будет, выход усилителя можно искуственно поднять на нужную величину "смещение нуля" компенсировав тем самым напряжение смещения операционника.
Здравствуйте всем ещё раз!
Сейчас задача у меня усложнилась и теперь, помимо терморезистивного датчика температуры, нужно подключить к ПК аналоговый датчик атмосферного давления, цифровой датчик температуры и цифровой датчик атмосферного давления. Подключение к ПК теперь осуществляется не с помощью COM-порта, а с помощью USB. Также, значения датчиков нужно выводить на lcd индикатор.
Терморезистивный датчик температуры - всё тот же ТСП-500.
Цифровой датчик температуры - DS18B20.
Аналоговый ДАД - MPX4115.
Цифровой ДАД - MPL115A1.
У всех датчиков, кроме первого, на выходе напряжение.
LCD индикатор - WH1604A (16х4).
Я собрал схему в протеусе, но так, как я не сильно доверяю своим знаниям по электронике, прошу вашей помощи