LINUX.ORG.RU

Cubiboard2 управление портом. Возможен ли шим? Запись логов?

 , ,


0

1

К cubiboard2 подключен hdd.
Порт gpio15_pg11 активируется на выход.

@reboot /mnt/hdd/logs/start_gpio_15.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
echo 15 > /sys/class/gpio/export;
echo out > /sys/class/gpio/gpio15_pg11/direction;
Далее мониторинг температуры hdd и кулера(кулер взят вмести с радиатором от старой Nvidia) При пороге >34 градусов на порт подается питание, к ножке gpio15_pg11 подключена база транзистора, коллектор и эмиттер подключены к ножкам +5 и земля.
sudo chmod u+s /usr/sbin/hddtemp //активируем запуск hddtemp без прав администратора

* * * * * /mnt/hdd/logs/fan_control.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
temp_hdd=$(hddtemp /dev/sda | awk '{ print $4}' | awk -F '°' '{ print $1}')
if [ "$temp_hdd" -ge "35" ]
then
 echo 1 > /sys/class/gpio/gpio15_pg11/value
else
 echo 0 > /sys/class/gpio/gpio15_pg11/value
fi

В итоге в простое(сейчас в летнее время) hdd нагревается до 33-34 градусов. Когда начинаешь использовать, то включается вентилятор. Температура выше 35 никогда не поднималась.

Вопрос. Можно ли реализовать шим?
И второй вопрос куда и как писать логи температуры hdd + включение кулера

Советую установить (если еще не установлена) библиотеку wiringPi, она облегчает доступ к GPIO.

ШИМ есть только на одной ноге: GPIO18, пример из wiringPi.

Если нужно больше ног с ШИМом, а период сильно маленький не нужен, можно как-то так навелосипедить.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Cubiboard2 управление портом

Cubiboard2

Советую установить (если еще не установлена) библиотеку wiringPi

GPIO Interface library for the Raspberry Pi

ymn ★★★★★ ()
Ответ на: комментарий от ymn

Япона мать! Куда-то я не туда смотрел. Позор на мою седую голову.

// кубитрак у меня тоже есть, но пока серьезно им не занимался.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Колхозный шим:

LIMIT=100
a=1

while [ "$a" -le $LIMIT ]
do
        sleep 0.1
        echo 1 > /sys/class/gpio/gpio15_pg11/value
        sleep 0.1
        echo 0 > /sys/class/gpio/gpio15_pg11/value
        let "a+=1"
done
Кулер заводится со второго оборота, действительно скорость упала в 2 раза(так как задержка межу включение и выключением одинакова). Другой вопрос, я так порт не спалю? обратный ток есть ведь от биполярного транзистора.
И ещё, как рассчитать/замерить напряжение подаваемое на порт?

vladcraft ()
Последнее исправление: vladcraft (всего исправлений: 2)
Ответ на: комментарий от vladcraft

Этот способ слишком медленный.

Погугли, sunxi позволяет нормальный ШИМ устроить: в /sys/class/pwm-sunxi/pwmX/{period,duty,duty_percent,polarity,pulse,pin,run} все необходимое можно запихать и аппаратный ШИМ будет работать.

Порт ты так не спалишь, если у тебя не слишком большая емкость затвора мосфета. Но на всякий пожарный можно между портом и затвором резюк воткнуть. И мосфет выбрать с маленькой емкостью затвора и как можно меньшим напряжением открывания, например, какой-нибудь NTE2984.

Напругу легко рассчитать по заполнению: при 100% заполнении у тебя будет 3.3В, при нулевом — 0В, а при заполнении q — примерно 3.3q Вольт.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

«резюк» стоит. Как раз рассчитывал исходя из открытия транзистора при напряжении 0.9 вольт.
Уменьшил sleep до 2ms(выключенное состояние), а включенное регулирую. Даже в таком случае слишком медленно?

vladcraft ()
Последнее исправление: vladcraft (всего исправлений: 1)
Ответ на: комментарий от vladcraft

Ну, твое дело. Я бы все-таки использовал аппаратный ШИМ, коли он есть!

Вентилятор стерпит и так. А вот шаговиками ты по такой схеме управлять не сможешь, там такты лучше аппаратным ШИМом гнать, иначе скоростей в 300-400 шагов в секунду (а при делении шага на 16 это аж 6.4кГц!) не получишь (т.к. обращение к объектам псевдоФС занимает вполне приличное время).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от vladcraft

Ну так ты ведро-то компилял sunxi? Там есть модуль pwm-sunxi (файл drivers/misc/pwm-sunxi.c), который и реализует sysfs-интерфейс к ШИМу.

А еще можно через mmap ШИМом и прочими вещами управлять.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от vladcraft

если в lsmod этот модуль отсутствует, то su -c "modrpobe pwm-sunxi", а дальше — по приведенной ссылке.

Ну, а чтобы этот модуль постоянно стартовал, надо его в автозагрузку добавить. Тут уж от дистра зависит.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от vladcraft

Это значит, что модуль не загружен!

Кстати, gpio_sunxi — совсем другой модуль!

В общем, сначала su -c "modprobe pwm-sunxi"

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.