Вложений: 1
Re: Н-Мост на MOSFET+Arduino
Не совсем правильная схема
Вот проверенный рабочий вариант
Re: Н-Мост на MOSFET+Arduino
Отлично, спасибо. Характеристики IRF7319 тоже порадовали. Насчет транзисторов для ключей: Подойдут простые транзисторы или в виду того что управляться будет ШИМом лучше взять с высокой скоростью срабатывания?
Re: Н-Мост на MOSFET+Arduino
Re: Н-Мост на MOSFET+Arduino
С прошивкой только начал разбераться но думаю использовать аппаратный шим с частотой еще не совсем разобрался. Ка к я понемаю например вот в таком случае:
PHP код:
void setup()
{
pinMode(5, OUTPUT);
TCCR0B = TCCR0B & 0b11111000 | 5;
}
void loop()
{
analogWrite(5, 128); // скважность от 0 до 255
}
Частота задается строкой
PHP код:
TCCR0B = TCCR0B & 0b11111000 | 5;
в таком случае частота 60 Гц
я вот не знаю для управления Мосфетами нужна какаято определенная частота? или частота в данном случае будет изменять лиш скорость смены скважности?
Мне предстоит еще выяснить с какой частотой и скважностью сигнал на пропорцеональном выходе RC приемника затем обробатывая это сигнал arduino будет менять скважность на выходе к Н-Мосту.
ps: Схема Н-Моста выложенная мной не работает, вернее работает но бешанно греется "Р" мосфет. Если сигнал с порта "А" то VT1 если с порта "В" то VT3
Вложений: 1
Re: Н-Мост на MOSFET+Arduino
Спасибо за схемку. собрал по ней Н-мост, работает отлично. Разобрался с сигналом от RC приемника. частота 50Гц длинна периода 20мс Down-18,5mc, Up-1.5mc. (среднее значение) сигнал варирует от Down-17,5мс Up-2,5mc. Следовательно для управления есть 5мс в каждую сторону от среднего значения. Проще говоря при среднем значении Arduino молчит, при значении от Up-1,5mc до Up-2mc крутит мотор в одну сторону, при значении от Up-1,5mc до Up-1mc в другую сторону.
Вот только не знаю как это обработать в Arduino. Прочитать этот сигнал с аналогова порта, перевести полученное значение в байты и назначить на них запись в порт идущий на мотор значение 0-255???
Re: Н-Мост на MOSFET+Arduino
Нарыл фукцию pulseIn по всей видимосте это то что мне нужно, функция считывает длинну сигнала H или L. Есть у кавонибудь пример использования этой функции? или подскажите уже существующий проект с ее использованием.
Re: Н-Мост на MOSFET+Arduino
Re: Н-Мост на MOSFET+Arduino
PHP код:
#include <TimerOne.h>
#define BTNPIN 2 // Вход сигнала
#define L 5 // Выход на H-Мост вращение в лево
#define R 6 // Выход на H-Мост вращение в право
volatile uint16_t startImpuls;
volatile uint16_t lengthImpuls;
volatile uint16_t timerCount=0;
void setup()
{
/* LOW — вызов прерывания всякий раз,
когда на порту низкий уровень напряжения;
CHANGE – прерывание вызывается при изменении
значения на входе;
RISING – вызов прерывания при изменении уровня
напряжения с низкого (LOW) на высокое(HIGH)
FALLING – вызов прерывания при изменении уровня
напряжения с высокого (HIGH) на низкое (LOW)*/
startImpuls=0;
lengthImpuls=0;
pinMode (BTNPIN, INPUT);
pinMode (L, OUTPUT);
pinMode (R, OUTPUT);
Serial.begin(115200);
Timer1.initialize(10); // Интервал срабатывания таймера 10мкс
Timer1.attachInterrupt(callback);
attachInterrupt(0, fireUp, RISING); // Запуск таймера при наличии сигнала HIGH
}
void callback() { timerCount++; }
void loop()
{
if (lengthImpuls > 0)
{
uint16_t li = lengthImpuls;
lengthImpuls=0;
if (li > 100 && li < 150) // эамер сигнала для вращения в лево
analogWrite (L, 23 - li);
if (li > 155 && li < 200) // эамер сигнала для вращения в право
analogWrite (R, 23 - li);
}
}
// Функция обработки прерывания на подъем
void fireUp()
{
detachInterrupt(0);
startImpuls = timerCount;
attachInterrupt(0, fireDown, FALLING);
}
// Функция обработки прерывания на падение
void fireDown()
{
detachInterrupt(0);
lengthImpuls = timerCount - startImpuls;
startImpuls=0;
timerCount=0;
attachInterrupt(0, fireUp, RISING);
}
Re: Н-Мост на MOSFET+Arduino