Для этой цели прикупил я в Китае миникомпьютер «Raspberry Pi», уникальный на тот момент. Сейчас существует много других миникомпьютеров, которые круче «Raspberry». Но выбор был сделан, теперь придётся мириться с недостатками «Малины», которые не такие уж серьёзные и устранимые.
В первой части статьи я познакомлю вас с первым блоком аудиоплеера - блоком питания миникомпьютера. На самом деле блок питает не только «Raspberry Pi», но и жёсткий диск, дисплей и другую 5-вольтовую периферию. БП подойдёт не только для «Raspberry Pi», но и для любого другого миникомпьютера с GPIO на борту.
Содержание статьи / Table Of Contents
↑ Корректное выключение «Raspberry Pi» кнопкой
Рис 2. Цепь включения и сброса «Raspberry Pi»
Проблема в том, что «Raspberry Pi» нет возможности выключить корректно аппаратным путем. По входу «RUN» «Raspberry Pi» включается при подаче питания благодаря конденсатору С97, или, если он был выключен программно, вход «RUN» включает «Raspberry Pi». Если «Raspberry Pi» включен (работает), то вход действует как «RESET».
Но ведь мне нужна единственная кнопка включения и выключения аудиоплееера: нажал – включился, ещё раз нажал — корректно выключился.
Другого способа, как корректно выключать «Малину», я не нашел. Это повлекло за собой растрату двух его GPIO (general-purpose input/output). Один, чтобы обработать кнопку вЫключения, другой сигнал – «компьютер выключен» (для контроллера питания) о том, что можно снять питание с периферии, да и с самого «Raspberry Pi» тоже.
На схеме можно выделить три основные части: импульсный преобразователь напряжения, дежурный блок питания и контроллер питания, собранный на логических микросхемах. Вся схема собрана из деталей, которые были в наличии. Силовая часть с лёгкостью обеспечила тестовую нагрузку в 2,5 Ампер. Больше нагружать блок питания я не счел необходимым. Потребление «Raspberry Pi» в среднем 600 мА в пиках до 1 А; жесткий диск 400 мА и то не всегда; все остальные узлы вместе 500-600 мА. Когда разбогатею, прикуплю SSD, чтобы не шумел, да и потребление будет ниже.
↑ Алгоритм работы схемы выключения «Raspberry Pi»
При нажатии кнопки «SB1» блок питания включается, питание подается на периферию и на сам «Raspberry Pi». «Raspberry Pi» начинает загружаться. После загрузки специальная минипрограмма устанавливает один из выходов GPIO «RPI_OFF» в «1» и ожидает отрицательного фронта сигнала «BUTTON_PS» от той же кнопки «SB1» (выключение аудиоплеера). При её нажатии миникомпьютер начинает программно выключаться. Если компьютер программно выключен, на всех выходах GPIO неизбежно устанавливаются логические «0», таким образом, формируется отрицательный фронт сигнала «RPI_OFF» по которому контроллер питания выключает питание через несколько секунд. Дело в том, что когда GPIO выключен, «Raspberry Pi» ещё пару секунд общается с SD картой, и узнать момент полного бездействия «Raspberry Pi» просто не представляется возможным. Остается только выждать пару секунд и отключить питание.Основа схемы «T–триггер», собранный на «D-триггере» 74HC74A. При нажатии кнопки «SB1» триггер D2 по входу «S» устанавливается в «1» и включает импульсный блок питания. Так же сигнал с «SB1» поступает на «Raspberry Pi» через разъем «X3», что бы при очередном нажатии кнопки выключить плеер.
Итак, мы подали питание на «Raspberry Pi», миникомпьютер загружается, сигнал «RPI_OFF» устанавливается в «1». Этот сигнал за счет инвертора на элементе «D1.3» создал отрицательный фронт на счетном входе триггера, но триггер переключится при положительном фронте на его счетном входе.
Выключение «Raspberry Pi»: нажимаем «SB1» – миникомпьютер выключается, выключился – «RPI_OFF» исчезает. За счёт инвертора «D1.3» на входе триггера имеем положительный фронт и триггер меняет состояние на противоположное, то есть устанавливается в «0», реле К1 отключает импульсный преобразователь напряжения и плеер полностью отключается.
Цепочка R18, R19, С30 обеспечивает небольшую задержку перед обнулением триггера. Элементы «D1.1» и «D1.2» – повторитель-буффер для разгрузки выхода «Raspberry Pi».
Цепочка C31, R15 обеспечивает нулевое состояние триггера при включении блока питания в сеть 220 V.
Задержка выключения нужна потому что после программного выключения, после того как все GPIO погашены, ещё 2-3 секунды идёт обращение к флеш-памяти миникомпьютера (там установлена операционная система). Это ещё одна небольшая проблема, которую необходимо предусмотреть в данном блоке питания.
↑ Программное обеспечение
Код программы, выдающей сигнал «RPi_OFF»
#include "stdlib.h"
#include "bcm2835.h"
#define PIN_12 RPI_V2_GPIO_P1_12
#define PIN_07 RPI_V2_GPIO_P1_07
int init_system (void)
{
if (!bcm2835_init()) return 0;
bcm2835_gpio_fsel(PIN_12, BCM2835_GPIO_FSEL_OUTP); //пин на выход
bcm2835_gpio_fsel(PIN_07, BCM2835_GPIO_FSEL_INPT); //как вход
}
int main (int argc, char *argv[], char *enpv[])
{
if (!init_system()) return 1;
bcm2835_gpio_write(PIN_12, HIGH); // (Машина загружена)
//ожидания низкого уровня (кнопки выключения)
while(bcm2835_gpio_lev(PIN_07)) delay(50);
system("poweroff");
return 0;
}
Этот код у меня включен в основном программном обеспечении, здесь он просто как рабочий пример для ознакомления или повторения. Далее надо добавить эту программу в автозагрузку. Для этого в файл /etc/rc.local в конце перед EXIT 0 добавим:
#! /bin/sh
……
/programs/autorun.sh &
EXIT 0
Папку проекта «programs.zip» можно скачать в секции «Файлы» внизу статьи. autorun.sh - это наш исполняемый скрипт, который запустит программу. В нем:
#! /bin/sh
./programs/project_pin_on/bin/pin12on
exit 0
↑ ШИМ-контроллер DP408P (1M0880) в импульсном БП
Здесь стоит уделить внимание замечательной микросхеме ШИМ-контроллеру DP408P (аналог 1M0880). DP408P работает на частоте 25 КГц, 1M0880 – 64 КГц. За время моих испытаний, попыток изготовить идеальных трансформаторов и т.п., сложилось впечатление, что убить чип невозможно. Без снабберных цепей я её включал, перегружал, все ей нипочём. Рекомендую чип для тех, кто впервые решил построить обратноходовой преобразователь. Я так ни одной микросхемы и не сжег. DP408P можно наковырять в старых СRT мониторах от SAMSUNG. Даташит, к сожалению, на нее не найти, но у меня в наличии так же имелась и 1M0880 и, в результате сравнения, выяснилось, что они практически одинаковые.Микросхема включается, как только напряжение её питания превысит 15 V. Микросхема выключается, когда напряжение питания упадет до 8,5-9 V. То есть, после того, как микросхема включилась, напряжение не обязательно должно быть 15 V и выше, но желательно.
Если напряжение питания превысит 27 V (25V для 1М0880), срабатывает защита и микросхема выключается. Следующая попытка включения пройдёт только после снятия питания, если напряжение питания упадет ниже 8,5-9 V и опять превысит 15 V.
В процессе испытаний, например, свеженамотанного трансформатора, удобно сначала запитать ШИМ от отдельного лабораторного блока питания. Надо помнить про очередность подачи напряжений: сначала высокое 308 V, затем 15 V.
Для первичного запуска используется отдельный выпрямитель D5. За счёт R6 и С18 напряжение питания достигает уровня 15 V немного позже появления 308 V. ШИМ запускается, потребляя около 20 мА. И если не подключить обмотку самопитания, С18 разряжается и микросхема выключается. Затем опять зарядится конденсатор, и процесс запуска повторится снова.
В конце подключаем обмотку самопитания. Намотать обмотку надо так, чтобы напряжение 15-17 V было на минимальной нагрузке — нагрузке холостого хода (в моем случае ок. 0,25 Вт).
В данном блоке питания я не стал применять самодельные трансформаторы, Был применен трансформатор от убитого молнией AC/DC вот такого адаптера:
Рис 4. Доноры импульсных трансформаторов
Питал этот адаптер какой-то роутер или свитч, не помню уже, с заявленными параметрами 5V 2A MAX.
Дело в том, что я не смог намотать трансформатор лучше, чем этот. Как я не изгалялся — выбросы при закрывании силового транзистора микросхемы были больше чем с данным китайским трансформатором. Ну и ладно!
↑ Вооруженным глазом
Посмотрим, что же получилось:Рис 5. Осциллограмма (pin-1 IC1), нагрузка 2.1А (Сток силового транзистора).
Рис 6. Осциллограмма (pin-1 IC1), нагрузка 2,1 А. (Выброс срезанный снаббером)
Рис 7. Осциллограмма (pin-1 IC1), нагрузка 50 mА. (Сток силового транзистора).
Рис 8. Осциллограмма (pin-1 IC1), нагрузка 2,1 А. (38 nS на 300 V).
По температуре: снабберный резистор при нагрузке 2,1 А = 50°С, DP408 = 37°С, трансформатор = 40°С. Температуру измерял бесконтактным термометром для младенцев.
↑ И ещё фото конструкции
На рисунке 11 плата A2. Три светодиода разного цвета и под ними кнопка. В корпусе кнопка имеет стеклышко (см. видео) поэтому крайние светодиоды загнул, чтобы светили к центру. Плата выполнена по аналогии родной платы видеомагнитофона (корпус применил от видеомагнитофона).
↑ Видео
Система не оптимизирована поэтому «Малина» загружается долго, да и флешка с операционной системой медленная. Потом вставлю настоящую, скоростную SD-карту 10-го класса.↑ Файлы
🎁 Программа — programs.zip 18.2 Kb ⇣ 125🎁 Схема и плата в sPlan и Sprint — sxema_plata.zip 80.52 Kb ⇣ 155
Пока всё. Пока.
Спасибо за внимание!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.