Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить

pic16f628a+L293d+nema17 изобрел схемку но не пашет

Сб авг 12, 2017 00:02:32

Здрасте.
Использую микроконтроллер 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)


В моем представлении моторчик просто должен крутится хоть куда то.
В общем проблема: не крутится моторчик, щелкает и пищит, но не крутится. Помогите разобраться.
Последний раз редактировалось Myxamor0 Сб авг 12, 2017 11:15:31, всего редактировалось 2 раз(а).

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Сб авг 12, 2017 07:09:11

VSS и VS перепутаны. Конфиг контроллера отсутствует.
Короче на бери делай как тут: https://electrosome.com/stepper-motor-p ... ontroller/

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Сб авг 12, 2017 11:14:39

действительно в 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

Попробуй начало вот так сделать:

Код:
#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

на выходе микроконтроллерчика вообще никаких сигналов

..... А нет это чет proteus тупил, сигналы есть на выходе но шаговик все равно стоит

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Вс авг 13, 2017 11:56:10

короче даже с изначальной программой если сделать
Код:
delay_ms(60);
и не подключать контакт к RA5/MCLR то в proteuse все крутится вроде нормально, а в реальности моторчик шипит (как будто закипает) и стоит на месте.
Если вместо шаговика на одну пару полюсов кинуть обычный моторчик он тоже стоит колом

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Вс авг 13, 2017 16:46:12

делай задержки БОЛЬШЕ и изучай сигнал на выходе хоть светодиодами

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Вс авг 13, 2017 16:51:10

не могу почему то больше редактировать первое сообщение
в общем такая схема Изображение
код такой
Код:
#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

не успевает, при увеличеии скорости надо и пит. напряжение поднимать

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Вс авг 13, 2017 20:21:22

не успевает, при увеличеии скорости надо и пит. напряжение поднимать

Вполне возможно у L293D пиковый ток по моему равен минимальному для моего моторчика

Добавлено after 31 second:
но почему тогда в Proteuse фигня с дерганием

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Вс авг 13, 2017 20:23:44

с него (протеуса) и начни напругу поднимать

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Пн авг 14, 2017 11:09:50

эксперементами в Proteus полученно что для задержки в 20 мне надо подать напряжение где то 27 вольт при том что моторчик всего на 12 вольт. Вопрос не поджарится ли моторчик в реальности

Re: pic16f628a+L293d+nema17 изобрел схемку но не пашет

Пн авг 14, 2017 11:24:18

чем больше скорость шаговика - тем больше противоЭДС - она и не давала мотору провернуться - на требуемой скорости его эдс была выше чем напряжение источника питания и он не мог брать ток.
греться не будет, но поднимать напругу пробуй постепенно - для каждой скорости нужно своё напряжение - чем скорость больше тем выше напруга, потому их и ограничивают по току.
Ответить