Песочница →
Реанимация старых лабораторных стендов при помощи микроконтроллеров
В НГТУ, где я учусь на факультете энергетики, основная масса лабораторных работ проходит на очень старых стендах. Неверные показания измерительных приборов, постоянные сбои и поломки, да и просто неудобное управление вызывает массу неудобств и мешает изучению исследуемых физических процессов. В связи с этим у меня и моего преподавателя возникла идея усовершенствования таких стендов при помощи микроконтроллеров.
Идея возникла после лабораторной работы, в которой необходимо было измерять частоту вращения асинхронной машины. Эти измерения производились при помощи оптического тахометра, который имелся в одном экземпляре на три стенда. Ожидание своей очереди сильно портило впечатление от экспериментов, в связи с чем один из преподавателей предложил самостоятельно создать аналог используемого прибора.
За основу был взят микроконтроллер Atmega32. Был найден рефлективный датчик ZX-03 при помощи которого можно было отслеживать частоту появления белой метки на валу ротора, и небольшой LСD дисплей для вывода информации. Микроконтроллер программировался при помощи самодельного программатора, основанного на микросхеме MAX-232, и AVRprog. Программа была написана на языке Си при помощи AVRStudio.
Алгоритм работы устройства довольно прост. Датчик генерирует определённый сигнал в зависимости от отражающей способности поверхности на которую он направлен. Микроконтроллер условно делит получаемые сигналы по уровню излучения на тёмные и светлые. Белая метка, наносимая на вал ротора, воспринимается как светлая полоса, остальная же его поверхность – как тёмная. Засекая при помощи внутреннего таймера время прохождения чёрной и белой полос, микроконтроллер получает время одного оборота ротора машины, а затем вычисляет частоту и выводит результат на дисплей. Для повышения точности измерений, время оборота сначала суммируется несколько раз, чтобы при вычислении частоты использовать среднее его значение. Далее приведён код, непосредственно осуществляющий измерения:
Схема устройства оказалась довольно простой и была собрана на макетной плате, а затем помещена внутрь коробки от щётки для обуви.
После сборки устройства и написания программы стало понятно, что мы не используем большую часть возможностей нашего микроконтроллера, например EEPROM, прерывания и т.д. В связи с этим было решено расширить возможности устройства, добавив в него функцию запоминания максимально измеренной величины и возможность управлять временем короткого замыкания асинхронной машины, что нужно было для проведения лабораторных работ.
Использовать EEPROM для запоминания произведённых измерений не составило большого труда. В стандартную библиотеку AVRStudio входят простые и понятные функции для управления этим видом памяти.
Реализовать управление коротким замыканием оказалось немного сложнее. Для этого пришлось создать каскад из двух реле разной мощности, одно из которых находится внутри тахометра и осуществляет управление другим более мощным реле, непосредственно коммутирующим короткое замыкание. Кроме того, для осуществления замыканий были применены прерывания, что позволило осуществлять коммутации не мешая работе самого тахометра.
Так же стоит добавить, что автоматизация коротких замыканий была вызвана практической необходимостью, так как раньше замыкание осуществлялось нажатием и удерживанием кнопки студентом. Так как длительность такого режима не ограничивалось, используемое оборудование подвергалось серьёзному риску. Автоматизация этого процесса при помощи микроконтроллера позволила значительно повысить надёжность лабораторной установки.
Датчик ZX-03 Reflector
Тахометр, собранный на макетной плате
Работающий тахометр
Устройство, размещённое в коробке от обувной щётки
В итоге получилось устройство, сравнимое по точности измерений с имевшимся в наличии заводским тахометром, но обгоняющее его по функционалу и сравнительно более дешёвое в изготовлении. Оно значительно облегчило работу с лабораторной установкой, а так же повысило уровень её надёжности и, в общем-то, вдохнуло в стенд новую жизнь.
Идея возникла после лабораторной работы, в которой необходимо было измерять частоту вращения асинхронной машины. Эти измерения производились при помощи оптического тахометра, который имелся в одном экземпляре на три стенда. Ожидание своей очереди сильно портило впечатление от экспериментов, в связи с чем один из преподавателей предложил самостоятельно создать аналог используемого прибора.
За основу был взят микроконтроллер Atmega32. Был найден рефлективный датчик ZX-03 при помощи которого можно было отслеживать частоту появления белой метки на валу ротора, и небольшой LСD дисплей для вывода информации. Микроконтроллер программировался при помощи самодельного программатора, основанного на микросхеме MAX-232, и AVRprog. Программа была написана на языке Си при помощи AVRStudio.
Алгоритм работы устройства довольно прост. Датчик генерирует определённый сигнал в зависимости от отражающей способности поверхности на которую он направлен. Микроконтроллер условно делит получаемые сигналы по уровню излучения на тёмные и светлые. Белая метка, наносимая на вал ротора, воспринимается как светлая полоса, остальная же его поверхность – как тёмная. Засекая при помощи внутреннего таймера время прохождения чёрной и белой полос, микроконтроллер получает время одного оборота ротора машины, а затем вычисляет частоту и выводит результат на дисплей. Для повышения точности измерений, время оборота сначала суммируется несколько раз, чтобы при вычислении частоты использовать среднее его значение. Далее приведён код, непосредственно осуществляющий измерения:
TIM16_WriteTCNT1(0); // обнуляем таймер
while (1) // Ждем конца черной полосы
{
adc = Read_ADC(); //считываем показания датчика
if(adc>0x280) // проверяем, не началась ли белая полоса
break;
}
while (1) // Ждем конца белой полосы
{
adc = Read_ADC(); //считываем показания датчика
if(adc<0x280) // проверяем, не началась ли чёрная полоса
break;
}
// Тут уже считаем значение счетчика, которое отражает время одного оборота, измеренное в тактах
counter=TIM16_ReadTCNT1();
Схема устройства оказалась довольно простой и была собрана на макетной плате, а затем помещена внутрь коробки от щётки для обуви.
После сборки устройства и написания программы стало понятно, что мы не используем большую часть возможностей нашего микроконтроллера, например EEPROM, прерывания и т.д. В связи с этим было решено расширить возможности устройства, добавив в него функцию запоминания максимально измеренной величины и возможность управлять временем короткого замыкания асинхронной машины, что нужно было для проведения лабораторных работ.
Использовать EEPROM для запоминания произведённых измерений не составило большого труда. В стандартную библиотеку AVRStudio входят простые и понятные функции для управления этим видом памяти.
Реализовать управление коротким замыканием оказалось немного сложнее. Для этого пришлось создать каскад из двух реле разной мощности, одно из которых находится внутри тахометра и осуществляет управление другим более мощным реле, непосредственно коммутирующим короткое замыкание. Кроме того, для осуществления замыканий были применены прерывания, что позволило осуществлять коммутации не мешая работе самого тахометра.
Так же стоит добавить, что автоматизация коротких замыканий была вызвана практической необходимостью, так как раньше замыкание осуществлялось нажатием и удерживанием кнопки студентом. Так как длительность такого режима не ограничивалось, используемое оборудование подвергалось серьёзному риску. Автоматизация этого процесса при помощи микроконтроллера позволила значительно повысить надёжность лабораторной установки.
Датчик ZX-03 Reflector
Тахометр, собранный на макетной плате
Работающий тахометр
Устройство, размещённое в коробке от обувной щётки
В итоге получилось устройство, сравнимое по точности измерений с имевшимся в наличии заводским тахометром, но обгоняющее его по функционалу и сравнительно более дешёвое в изготовлении. Оно значительно облегчило работу с лабораторной установкой, а так же повысило уровень её надёжности и, в общем-то, вдохнуло в стенд новую жизнь.
16.09.2011 18:56+0400