1: Hướng dẫn setup và kết nối các jack với main chính
http://www.mediafire.com/file/66nmby1bk3mz5qx/hd-pid.pdf
######################
Đoạn chương trình code để kết nối với vi điều khiển của main chính
// khai báo thư viện vi điều khiển mà mình dùng
#include <mega16.h>
#include <delay.h>
// định nghĩa các chế độ hoạt động của mạch động cơ
#define thatroi 0
#define ham 2
#define tien 1
#define lui 3
unsigned char v1; // cac bien van toc
unsigned char c1; // cac bien chieu
//lưu biến đếm setup tăng giảm vận tốc vào trong rom
eeprom unsigned char vtt=100;
// chương trình con dùng timer để điều chế độ rộng xung, dồng thời thay đổi chiều và tốc độ động cơ
void dc1(unsigned char speed,unsigned char dir)
{
OCR1A=speed;
switch(dir)
{
case tien: PORTD.2=1;break;
case lui: PORTD.2=0;break;
case ham: OCR1A=2;break;
default: OCR1A=0;break; // tha troi
}
}
void main
{// khai báo thanh ghi chứ timer OCR1A và chân DIR: PORTD.2
// nhớ đọc kí dòng chú thích dưới để khi àm việc cấu hình cho đúng
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 62,500 kHz
// Mode: Ph. correct PWM top=0x00FF
// OC1A output: Inverted
// OC1B output: Inverted
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xF1;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
while(1)
{ v1=0;
c1= tha troi; // nếu ko dùng encoder của động cơ
//c1= ham; // nếu dùng encoder của động cơ
// giả sử dùng nút bấm
if(TANG==0)
{
if(vtt<255)
{
vtt++;
delay_ms(100);
}
}
if(GIAM==0)
{ // chú ý nghe tiếng e của động cơ để khi code chọn được giá trị là 60 hay 70
if(vtt>70)
{
vtt--;
delay_ms(100);
}
}
if(TIEN==0)
{
v1=vtt;
c1=tien;
}
if(LUI==0)
{
v1=vtt;
c1=lui;
}
// luôn đặt ở cuối
dc1(v1,c1);
}
}