最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Arduino 下用A4988或TMC2209驅(qū)動(dòng)42步進(jìn)電機(jī)

2023-02-21 20:16 作者:湯姆yuan  | 我要投稿

在DIY黑膠唱機(jī)的過程中,準(zhǔn)備用一個(gè)42步進(jìn)電機(jī)帶動(dòng)唱盤,需要恒定的每分鐘33.33轉(zhuǎn)的轉(zhuǎn)速。

記錄一下折騰的過程。

用洞洞板制作的驅(qū)動(dòng)電路:

驅(qū)動(dòng)板接線圖

先拿價(jià)格便宜很多的A4988做實(shí)驗(yàn)

按照接線圖在面包板上把線接好。

Ardunio代碼如下:

bool PULSE_STATE = true;


// A4988引腳連接Arduino引腳編號(hào)

const int dirPin ? = 2; ? // Direction

const int stepPin ?= 3; ? // Step

const int sleepPin = 4; ? // Sleep

const int resetPin = 5; ? // Reset

const int ms3Pin ? = 6; ? // Ms3

const int ms2Pin ? = 7; ? // Ms2

const int ms1Pin ? = 8; ? // Ms1

const int enPin ? ?= 9; ? // Enable


void setup() {

? // 設(shè)置引腳模式

? pinMode(stepPin,OUTPUT);

? pinMode(dirPin,OUTPUT);

? pinMode(sleepPin,OUTPUT);

? pinMode(resetPin,OUTPUT); ?

? pinMode(ms3Pin,OUTPUT); ?

? pinMode(ms2Pin,OUTPUT); ?

? pinMode(ms1Pin,OUTPUT);

? pinMode(enPin,OUTPUT); ?

?

? // 初始化引腳狀態(tài)

? digitalWrite(sleepPin, HIGH); ?

? digitalWrite(resetPin, HIGH);

? digitalWrite(enPin, LOW);


? digitalWrite(ms1Pin, LOW);

? digitalWrite(ms2Pin, LOW);

? digitalWrite(ms3Pin, LOW); ?

? // 初始化電機(jī)步進(jìn)模式為全步進(jìn)

? //TMC2209 64細(xì)分

? digitalWrite(ms1Pin, LOW);

? digitalWrite(ms2Pin, HIGH);


? //Clockwise 順時(shí)針旋轉(zhuǎn)

? digitalWrite(dirPin, 1);


?

? cli(); ? ? ? ? ? ? ? ? ? ? ?//stop interrupts for till we make the settings

? /*1. First we reset the control register to amke sure we start with everything disabled.*/

? TCCR1A = 0; ? ? ? ? ? ? ? ? // Reset entire TCCR1A to 0

? TCCR1B = 0; ? ? ? ? ? ? ? ? // Reset entire TCCR1B to 0

? TCNT1 ?= 0;


? // turn on CTC mode

? TCCR1B |= (1 << WGM12);


? /*2. We set the prescalar to the desired value by changing the CS10 CS12 and CS12 bits. */ ?

?

? TCCR1B |= B00000001; ? ? ? ?

? /*3. We enable compare match mode on register A*/

?

? TIMSK1 |= (1 << OCIE1A);

? ?

? OCR1A = 1125; ? ? ? ? ? ? //Finally we set compare register A to this value ?

? sei(); ? ? ? ? ? ? ? ? ? ? //Enable back the interrupts

}


void loop() {

? // put your main code here, to run repeatedly:

}


?

ISR(TIMER1_COMPA_vect){

?

? PULSE_STATE = !PULSE_STATE; ? ? ?

? digitalWrite(stepPin,PULSE_STATE); ?

}



代碼主要使用了TIMER1定時(shí)器。需要計(jì)算發(fā)送到電機(jī)的脈沖頻率。用的Arduino NANO 主頻是26MHz, 普通42步進(jìn)電機(jī)的步距角是1.8度,轉(zhuǎn)一圈都要200個(gè)脈沖,A4988芯片最大可使用的細(xì)分是16細(xì)分,如果用16細(xì)分,轉(zhuǎn)一圈都要200*16=3200個(gè)脈沖。我的目標(biāo)是每三分鐘轉(zhuǎn)100轉(zhuǎn),需要的脈沖頻率是100*3200/(3*60)=1777.77Hz


A4988驅(qū)動(dòng)芯片噪音比較大,步進(jìn)電機(jī)運(yùn)轉(zhuǎn)時(shí)震動(dòng)比較大。試驗(yàn)成功之后,換上了高大上的TMC2209芯片,電機(jī)低速運(yùn)轉(zhuǎn)時(shí)超級(jí)安靜,震動(dòng)極小。TMC2209內(nèi)部支持256細(xì)分,計(jì)算脈沖頻率的時(shí)候需要重新計(jì)算一下。上面代碼中使用的是TMC2209芯片的版本。


用洞洞板制作的時(shí)候,用了一片LM7809穩(wěn)壓芯片給NANO主板供電,但當(dāng)使用24伏電壓時(shí),LM7809芯片發(fā)熱比較嚴(yán)重。后續(xù)準(zhǔn)備換一個(gè)DCDC模塊。

使用這個(gè)步進(jìn)電機(jī)的唱機(jī)演示:


Arduino 下用A4988或TMC2209驅(qū)動(dòng)42步進(jìn)電機(jī)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
清原| 陕西省| 孟州市| 柏乡县| 大埔县| 阿合奇县| 杂多县| 邵阳市| 塘沽区| 株洲县| 昌图县| 大埔区| 淮南市| 容城县| 海南省| 大方县| 广汉市| 余江县| 丹凤县| 湟中县| 兴城市| 星座| 招远市| 海宁市| 黄山市| 吉林市| 长泰县| 辽源市| 砀山县| 屏东市| 绥棱县| 南溪县| 威海市| 日喀则市| 平谷区| 英德市| 资阳市| 股票| 乃东县| 湘阴县| 勃利县|