Обратился как то ко мне знакомый с просьбой починить протравитель зерновых культур. В ходе диагностики выяснилось что некорректно работают ёмкостные датчики уровня. Собраны они на PIC12F629 . Я долго не стал мучиться, решил повторить тоже самое на ATiny13A. На моё удивление решение на AVR заработало гораздо лучше (скорее это связано с алгоритмом реализации и быстродействием МК).
В моем решении выполняется усреднение результатов измерения, перед включением управляющего выхода плюс ко всему реализован гистерезис порога срабатывания, то есть введен диапазон при котором состояние не определено. Усредняется 20 измерений скорость реакции сенсора порядка 200-500мс. Для моего случая — как раз.
Код реализации такой :
PORTB.0=1;
DDRB.0=1;// Set out port
delay_ms(2);
DDRB.0=0;// hi-z level set port
PORTB.0=0;
while(PINB.0==1)
{
if(timer>1000)timer=1000;
timer++;
}
timer+=timer;
if(++cnt>19) // усреднение измерений
{
timer/=20;
if(timer>10) {OUT=1; delay_ms(2000); }
else if(timer<6) { OUT=0; delay_ms(1000); }
timer=0;
cnt=0;
}
Как видно из кода все сделано программно и работает как молоток.
Схема на удивление тоже очень проста.

Выкладываю также тестовую прошивку. Работает 3 включения, потом блокируется. Чтобы разблокировать нужно замкнуть отверткой контакты 3 и 4 микросхемы.
Также , выкладываю исходный код, который можно отредактировать, откомпилировать и получить нормальную прошивку.
По вопросам допиливания прошивки или получения полной прошивки под конкретно Ваши нужды, можно написать мне в ЛС.
Прикрепленные файлы:
1 comment on “Ёмкостной датчик уровня зерна и жидкостей”
Спасибо! Прикольно, то что надо. Нужно контролировать уровень воды в пластиковом баке. ставил погружные электроды — покрываются всяким налетом, начинают моросить. Решил использовать емкостный датчик на двух логических микросхемах. Плату наклеить снаружи на бак, все сухо и без ложняков. Чуть не собрал устройство, когда нашел эту штуку! Тем более тини13 стоит копейки, а функционал можно еще нарастить. Уважуха!