如何使用嵌入式c使用简单的代码控制伺服电机?

时间:2016-09-29 16:05:04

标签: avr avrdude winavr

我正在研究一个学校项目“自动铁路系统” 我的项目假设在火车进入车站时关闭大门,蜂鸣器开启,90秒倒计时7-seg显示。和一个LED闪烁。  火车离开车站后,大门打开,蜂鸣器关闭,导致关闭。 我试图使用直流电机打开和关闭门,但它没有给我一个准确的角度,我需要尝试使用伺服电机。 所以我需要它在零位置打开门并在90位关闭它。 我在互联网上找到的所有代码,他们都使用PWM和定时器,我没有在我的课程中使用它,所以有人可以用简单的代码帮我做这个吗?

我正在使用运行在16000000 HZ的Atmega32

1 个答案:

答案 0 :(得分:1)

它取决于您的模拟伺服(由PWM控制)频率规格。了解伺服规范后,您可以使用cvavr编译器上的内置功能设置PWM,或者您可以对PWM寄存器进行一些研究。
以下是PWM设置的一些示例

//using OC0 (B.3)
DDRB.3 = 1; //set B.3 as output
TCCR0=0b0111 0001;
TCNT0=0; //set to Phase Correct PWM mode, no prescaler, and inverted output

//to assign a value to your PWM
OCR0 = 127 //50% duty cycle since it was 8 bit