Kết quả 1 đến 10 của 13
Chủ đề: Sensor dò line dùng ADC
-
06-12-2013, 05:32 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Sensor dò line dùng ADC
Như các bạn đã biết năm nào mỗi năm Robocon tổ chức một lần và việc dò line với các robot là không thể thiếu dù công nghệ tới đâu. Sensor dò line thường không ổn định do điều kiện về ánh sáng và độ nhám, bóng của sân thi đấu không ổn định. Vậy nên dò line ổn định đã là nỗi băn khoăn với tất cả anh em làm Robot. Ngoài thị trường hiện nay đã bán nhiều loại sensor dò line mà cơ bản là ổn định nhưng giá thành khá cao đối với sinh viên.
Với tut này mình hy vọng sẽ góp phần nào công sức cho anh em khi làm robot.View more random threads:
- các bác xem hộ em con đèn led này có tác dụng j với ?
- Tổng hợp 63 cuốn sách về Robot
- bánh lái cho robot sumo
- ROBOT SONG SONG.
- [HOT] Two wheel sefl balancing robot
- Dự án NII của Fujitsu: "robot thi đại học"
- The Reaction Wheel Pendulum!
- MULTI DATA ACQUISTION BOARD (Board Control)
- Robot Mini tự hành đo đường trong mê cung (MINI SELF-PROPELLED ROBOT MEASURED IN THE MAZE)
- bánh xe đa hướng omni
-
06-13-2013, 05:27 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình Up tiếp phần sơ đồ nguyên lý lên cho các bạn. Nói chung sơ đồ này mình đã chỉnh sửa từ sơ đồ cũ nên mình nghĩ nó sẽ là ổn định nhất. Các bạn chú ý mình dùng Atmega8 kiểu SMD nên mới có đủ 8 ADC còn Atmega8 kiểu chân DIP chỉ có 6 ADC thôi. Và khi dùng Full 8 ADC thì chúng ta chỉ có thể dùng kiểu 8bit thôi.
[IMG]http://*************/attachments/4959/[/IMG]
-
07-03-2013, 06:57 AM #3Silver member
- Ngày tham gia
- May 2016
- Bài viết
- 0
Bận quá nên quyên không UP code lên cho các bạn tham khảo.
Hiện tại code này đã chạy nhưng hôm nào rỗi rỗi mình sẽ viết lại y hệt các mạch sensor họ đang bán trên thị trường cho mọi người.
Mã:// Vesion 1.0 #include <mega8.h> #include <delay.h> #include <stdio.h> #define ADC_VREF_TYPE 0x20 unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } unsigned char temp_adc[8]={0,0,0,0,0,0,0}; // mang RAM doc ADC dung de so sanh unsigned char w[8] = {1,2,4,8,16,32,64,128}; eeprom unsigned char mau_adc[8] ; // mang rom luu gia tri lay ma so sanh unsigned char sensor = 0x00; #define button PINB.0 #define out_sensor PORTD void ghi_adc_in_rom (void) // chuong trinh thuc hien ghi ADC vao ROM { unsigned char i; for(i=0;i<8;i++) { mau_adc[i] = read_adc(i); delay_ms(20); // thuc hien tre thoi gian ghi } } void doc_adc(void) // thuc hien viec doc { unsigned char j; sensor = 0x00; temp_adc[0] = read_adc(0); temp_adc[1] = read_adc(1); temp_adc[2] = read_adc(2); temp_adc[3] = read_adc(3); temp_adc[4] = read_adc(4); temp_adc[5] = read_adc(5); temp_adc[6] = read_adc(6); temp_adc[7] = read_adc(7); for(j=0;j<8;j++) { if((mau_adc[j]-3) < temp_adc[j]) // kiem tra so sanh voi gia tri ADC mau { sensor |= w[7-j]; // thuc hien cong don gia tri } else sensor |= 0; } } void main(void) { PORTD = 0xFF; DDRD = 0xFF; PORTB = 0Xff; DDRB = 0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 500.000 kHz // ADC Voltage Reference: AREF pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; while (1) { if(!button) { while(!button); out_sensor = 0x00; ghi_adc_in_rom(); delay_ms(100); } doc_adc(); out_sensor = sensor; // dua gia tri do duoc ra PORTD } }
-
07-03-2013, 01:52 PM #4Silver member
- Ngày tham gia
- Jan 2016
- Bài viết
- 0
Gửi bởi dainv
-
07-03-2013, 03:48 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Ý của bạn muốn nói tới mạch có cuộn cảm và tự điện ở #2 đúng không. Cái này đơn giản chỉ là mạch lọc thôi bạn à.
-
07-03-2013, 04:36 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi dainv
-
07-03-2013, 04:56 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mạch này mình làm hoàn toàn theo khuyến cáo của nhà sản xuất, vì vậy mình không quan tâm công thức cụ thể để tạo ra nó.
[IMG]http://*************/attachments/6447/[/IMG]
-
07-03-2013, 05:32 PM #8Silver member
- Ngày tham gia
- Mar 2016
- Bài viết
- 0
Đội robocon của mình năm nào cũng dùng phương pháp này để dò vạch. Cách này có ưu điểm là có thể "học" sân mới chứ không bị fix cứng hoặc phải điều chỉnh lại bằng chiết áp như loại thông thường.
Thanks anh dainv đã chia sẻ.
-
06-22-2014, 12:23 AM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bạn chho mình hỏi đọc adc từ senser đâu vào với
mình đang học làm robot dò đuwong
-
06-22-2014, 02:48 AM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái này mình thường hay lấy cái giá trị ngưỡng bằng giá trị vạch+giá trị của nền rồi chia cho 2. So sánh nếu như lớn hơn (hoặc là nhỏ hơn tùy loại sensor) ngưỡng thì là vạch trường hợp còn lại thì là nền thôi.
Đồ chơi sáng tạo - Người bạn nhỏ...
Hôm nay, 10:32 AM in Rao vặt tổng hợp