Помогите найти подобие lb1838 но на 12вольт

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
vispower
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Ср фев 18, 2009 13:59:46

Помогите найти подобие lb1838 но на 12вольт

Сообщение vispower »

Нарыл с дисковода драйвер шагового движка lb1838, мне он очень понравился тем что можно тремя ножками моторчик крутить (ena1 и ena2 можно объединить), а значит на один контроллер можно их больше повесить, но у нее минус максимальное наряжение в 9вольт, нужно до 14вольт. Может кто знает подобный дривер, на большее напряжение.
Реклама
kr5
Родился
Сообщения: 19
Зарегистрирован: Пт мар 05, 2021 23:50:35

Re: Помогите найти подобие lb1838 но на 12вольт

Сообщение kr5 »

Стоимость и доступность сдвигового регистра серии 595 такова, что позволяет не обращать внимание на кол-во "ножек" в подобных задачах, а значит утверждение "понравился тем что можно тремя ножками моторчик крутить" не выдерживает критики и не может быть нормальным критерием для поиска драйвера.
Реклама
vispower
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Ср фев 18, 2009 13:59:46

Re: Помогите найти подобие lb1838 но на 12вольт

Сообщение vispower »

Не согласен! Зачем мне на плате лишнее. У каждого свои тараканы
iddqd
Нашел транзистор. Понюхал.
Сообщения: 156
Зарегистрирован: Вс сен 06, 2020 16:06:10

Re: Помогите найти подобие lb1838 но на 12вольт

Сообщение iddqd »

Я как раз с флопаря сдул какой-то KA28xx (производитель - Fairchild). И шаговик оттуда же. По найденому даташиту до 15 вольтов держит. У него вообще по сути 2 сигнала, задающих полярность каждой фазы. Есть chip enable но он странный, я так и не понял на что влияет, ток через обмотки не вырубает. Впрочем с тем степпером и чипом не так уж важно, они с самого начала ОК насчет такого режима. Насколько это до сих пор производится и продается - хз.

А что до сдвиговых регистров - ну, знаете?! Шаговикам все же какие-никакие времянки надо формировать, и когда это просто лапки, вон того шаговика переключить - одно, а когда кучу битов в регистр загонять, с точки зрения программирования и трекинга состояний кучи шаговиков это уже трэш какой-то. Вместо тривиального кода делающего что задумано будут какие-то костыли, потому что в лоб сменить в момент X состояние только потребных лапок не трогая остальные - уже ой. В таком случае может иметь смысл взять процик с чуть большим количеством лапок.
Реклама
Эиком - электронные компоненты и радиодетали
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Помогите найти подобие lb1838 но на 12вольт

Сообщение Morroc »

Сколько же у вас ШД и с какой частотой их крутите чтобы это стало критично ? ) Код сильно отличаться не должен, просто дергать пины будете через функцию-прокладку.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Land
Прорезались зубы
Сообщения: 217
Зарегистрирован: Ср янв 11, 2012 11:55:51

Re: Помогите найти подобие lb1838 но на 12вольт

Сообщение Land »

не знаю, вдруг кому пригодится. Код для lb1838 под атмегу8.
Спойлер

Код: Выделить всё

#include <avr/io.h>
#include <avr/interrupt.h>

//-------------------------------------------------------------------------
//  Управление портом B
//-------------------------------------------------------------------------

#ifdef	PORTB
#define PORTB_OUT_ALL()	(DDRB = 0xFF);
#define PORTB_IN_ALL()	(DDRB = 0x00);
// Настройка порта B на выход по пинам
#define PORTB_OUT(x)	(DDRB |= (1 << x))
// Настройка порта B на вход по пинам
#define PORTB_IN(x)		(DDRB &= ~(1 << x))
// Вывод в порт B по пинам 1
#define PORTB_ON(x)		(PORTB |= (1 << x))
// Вывод в порт B по пинам 0
#define PORTB_OFF(x)	(PORTB &= ~(1 << x))
// Чтение из порта B по пинам
#define PORTB_RD(x)		(PINB & (1 << x))
// Инвертирование битов порта B
#define PORTB_XOR(x)	(PORTB ^= (1 << x))
// Вывод значения в порт
#define PORTB_DATA_OUT(b)	PORTB = b
// Чтение из порта
#define PORTB_DATA_IN()	PINB
//---------------------------------------------
#define EN1 1
#define EN2 2
#define IN 3
#define RVRS 0
#endif

char i = 1;
uint16_t steps = 0;
char flag_STOP = 1;
char flag_RVRS = 0;

ISR(TIMER2_COMP_vect)
{
	PORTB ^= (1 << EN1)|(1 << EN2);
	if(!i) {PORTB_XOR(IN); i = 2;} else;
	i--;
	steps--;
	OCR2 = 0x25;
}

ISR(INT0_vect)
{
	
}

void setup(void)
{
	asm("wdr");
	MCUCSR &= ~(1<<WDRF); /* Clear WDRF in MCUSR */
	WDTCR |= (1<<WDCE) | (1<<WDE);	/* Write logical one to WDCE and WDE */
	/* Keep old prescaler setting to prevent unintentional time-out */
	WDTCR = 0x00;	/* Turn off WDT */
	//---------------Ports-----------------------
	PORTB_IN(RVRS);
	PORTB_ON(RVRS);
	PORTB_OUT(EN1); //PB1, PB2 out
	PORTB_OUT(EN2);
	PORTB_OUT(IN);
	PORTB_OFF(EN1);
	PORTB_OFF(EN2);
	PORTB_OFF(IN);
	//--------Timer2-------------------
	TCCR2 = 0; // set entire TCCR2A register to 0
	TCNT2  = 0x00; // initialize counter value to 0xFF
	 // 256 presc. toggle OC2 PWM Pfase Correct
	TIMSK |= (1 << OCIE2);
	OCR2 = 0x25; // 500Hz 0x25 для тактов	
	sei();
}


int main(void)
{
	setup();
		
	while(flag_STOP)
		{
		if(PORTB_RD(0))
			{ 
				PORTB_ON(EN1); PORTB_OFF(EN2); PORTB_ON(IN); flag_RVRS = 1; TCCR2 |=(1 << WGM21)|(1 << CS22)|(1<< CS21)|(1<< CS20); steps = 477;
			} else
				{
					PORTB_ON(EN2); PORTB_OFF(EN1); PORTB_OFF(IN); flag_RVRS = 0; TCCR2 |=(1 << WGM21)|(1 << CS22)|(1<< CS21)|(1<< CS20); steps = 477;
				}			
			
		while (steps){};
		PORTB &= ~(1 << EN1)|(1 << EN2);	
		TCCR2 = 0;
		flag_STOP = 0;
		}
}
рабочий, проверено, шаговик крутит туда-сюда.
Реклама
Ответить

Вернуться в «Периферия»