Страница 1 из 1
pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Сб авг 12, 2017 00:02:32
Myxamor0
Здрасте.
Использую микроконтроллер pic16f628a, в качестве моста L293d и биполярный шаговый моторчик nema17(а именно 17hs8401). Я нифига не шарящий, возомнил бог знает что и придумал типа свою схемку вот такую

Программу пишу в PIC C COMPILER, испытываю все в Proteus и железе. Вот так выглядит моя программа
Код: Выделить всё
#include <main.h>
void main()
{
while(TRUE)
{
output_high(PIN_B4);
output_high(PIN_B6);
output_low(PIN_B5);
output_low(PIN_B1);
output_low(PIN_B7);
output_low(PIN_B3);
delay_ms(20);
///
output_low(PIN_B4);
output_high(PIN_B1);
output_high(PIN_B5);
output_low(PIN_B3);
output_low(PIN_B7);
output_low(PIN_B6);
delay_ms(20);
////
output_high(PIN_B4);
output_high(PIN_B3);
output_low(PIN_B5);
output_low(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B6);
delay_ms(20);
////
output_low(PIN_B4);
output_low(PIN_B6);
output_high(PIN_B5);
output_high(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B3);
delay_ms(20);
//TODO: User Code
}
}
а в main.h у меня написанно вот это
Код: Выделить всё
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(int=4000000)
В моем представлении моторчик просто должен крутится хоть куда то.
В общем проблема: не крутится моторчик, щелкает и пищит, но не крутится. Помогите разобраться.
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Сб авг 12, 2017 07:09:11
Wandal
VSS и VS перепутаны. Конфиг контроллера отсутствует.
Короче на бери делай как тут:
https://electrosome.com/stepper-motor-p ... ontroller/
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Сб авг 12, 2017 11:14:39
Myxamor0
действительно в Proteus перепутал выводы VSS и VS, а в железе все правильно спаял, исправил. Но лучше не стало, теперь в симуляции моторчик даже не дергается.
подправил код, взял из той статейки верхнюю часть цикл у меня помоему такойже
Код: Выделить всё
#include <main.h>
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_vref(FALSE);
while(TRUE)
{
output_high(PIN_B4);
output_high(PIN_B6);
output_low(PIN_B5);
output_low(PIN_B1);
output_low(PIN_B7);
output_low(PIN_B3);
delay_ms(20);
///
output_low(PIN_B4);
output_high(PIN_B1);
output_high(PIN_B5);
output_low(PIN_B3);
output_low(PIN_B7);
output_low(PIN_B6);
delay_ms(20);
////
output_high(PIN_B4);
output_high(PIN_B3);
output_low(PIN_B5);
output_low(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B6);
delay_ms(20);
////
output_low(PIN_B4);
output_low(PIN_B6);
output_high(PIN_B5);
output_high(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B3);
delay_ms(20);
//TODO: User Code
}
}
а в main.h у меня написанно вот это
Код: Выделить всё
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(int=4000000)
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Сб авг 12, 2017 16:20:59
Wandal
Попробуй начало вот так сделать:
Код: Выделить всё
#include <16F628A.h>
#fuses INTRC_IO,NOBROWNOUT,NOWDT,NOPROTECT,NOLVP
#use delay(int=4000000)
void main()
{
set_tris_b(0x00);
while(TRUE)
{
output_high(PIN_B4);
output_high(PIN_B6);
output_low(PIN_B5);
............
..........
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Сб авг 12, 2017 19:20:36
Myxamor0
на выходе микроконтроллерчика вообще никаких сигналов
..... А нет это чет proteus тупил, сигналы есть на выходе но шаговик все равно стоит
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 11:56:10
Myxamor0
короче даже с изначальной программой если сделать
и не подключать контакт к RA5/MCLR то в proteuse все крутится вроде нормально, а в реальности моторчик шипит (как будто закипает) и стоит на месте.
Если вместо шаговика на одну пару полюсов кинуть обычный моторчик он тоже стоит колом
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 16:46:12
Ivanoff-iv
делай задержки БОЛЬШЕ и изучай сигнал на выходе хоть светодиодами
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 16:51:10
Myxamor0
не могу почему то больше редактировать первое сообщение
в общем такая схема

код такой
Код: Выделить всё
#include <main.h>
void main()
{
while(TRUE)
{
output_high(PIN_B4);
output_high(PIN_B6);
output_low(PIN_B5);
output_low(PIN_B1);
output_low(PIN_B7);
output_low(PIN_B3);
delay_ms(60);
///
output_low(PIN_B4);
output_high(PIN_B1);
output_high(PIN_B5);
output_low(PIN_B3);
output_low(PIN_B7);
output_low(PIN_B6);
delay_ms(60);
////
output_high(PIN_B4);
output_high(PIN_B3);
output_low(PIN_B5);
output_low(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B6);
delay_ms(60);
////
output_low(PIN_B4);
output_low(PIN_B6);
output_high(PIN_B5);
output_high(PIN_B7);
output_low(PIN_B1);
output_low(PIN_B3);
delay_ms(60);
//TODO: User Code
}
}
в main.h написано это
Код: Выделить всё
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(int=4000000)
программу писал в PIC C COMPILER а программировал через icprog
В последнем варианте когда в Proteus все крутилось а в железе мертвым колом стояло было дело наверно в плохой прошивке микроконтроллера, перепрошил его и моторчик зашагал
Добавлено after 1 minute:
осталось непонятным почему с задержками меньше 60 все не крутится нормально
Добавлено after 1 minute 13 seconds:
если ставишь задержку 20 - дергается туда сюда туда сюда, вперед-назад, вперед-назад
при 50 крутится крутится а потом бац и шаг или два назад делает
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 20:08:39
Ivanoff-iv
не успевает, при увеличеии скорости надо и пит. напряжение поднимать
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 20:21:22
Myxamor0
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3161773#p3161773"]не успевает, при увеличеии скорости надо и пит. напряжение поднимать[/uquote]
Вполне возможно у L293D пиковый ток по моему равен минимальному для моего моторчика
Добавлено after 31 second:
но почему тогда в Proteuse фигня с дерганием
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Вс авг 13, 2017 20:23:44
Ivanoff-iv
с него (протеуса) и начни напругу поднимать
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Пн авг 14, 2017 11:09:50
Myxamor0
эксперементами в Proteus полученно что для задержки в 20 мне надо подать напряжение где то 27 вольт при том что моторчик всего на 12 вольт. Вопрос не поджарится ли моторчик в реальности
Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет
Добавлено: Пн авг 14, 2017 11:24:18
Ivanoff-iv
чем больше скорость шаговика - тем больше противоЭДС - она и не давала мотору провернуться - на требуемой скорости его эдс была выше чем напряжение источника питания и он не мог брать ток.
греться не будет, но поднимать напругу пробуй постепенно - для каждой скорости нужно своё напряжение - чем скорость больше тем выше напруга, потому их и ограничивают по току.