Demo project (16F887)

Started by JENG, July 09, 2013, 12:16:31 PM

Previous topic - Next topic

JENG

LM35 Temperature Sensors (PIC16F887)

http://www.youtube.com/v/9ON2-KuZx8w

ปรับ Vref+ (RA4)ให้ได้ 1 โวลท์นะครับ output ของ lm35 อยู่ในระดับ 10mv/c
เช่นวัดได้ 0.317 โวลท์ แปลงเป็นอุณหภูมิได้ 31.7C เป็นต้น
การเปลี่ยนแปลงไวกว่า DS1820 ใช้วัดอุณหภูมิในบรรยากาศ
ได้เป็นอย่างดี code ไม่ได้ optimize นะครับเขียนแบบด้นสด

edit1. การปรับแต่งหา digital meter ตั้งย่านวัดไม่เกิน 2volt วัดขา Vout
ของ LM35 แล้วปรับ Vref+ (RA4) ให้ค่าที่แสดงใน7segmentตรงกับมิเตอร์เป็นอันใช้ได้

http://www.4shared.com/rar/PuF3enX6/LM35.html


One Button Control 4 Relay (PIC16F887)

อธิบายหน่อยนึง โปรแกรมเป็น state machine ครับ
เน้นการตอบสนองที่ราบรื่น

http://www.youtube.com/v/Ar-WbSZG3rk

การควบคุมจะเป็นแบบ toggle
กด 1 ครั้ง toggle channel 1
กด 2 ครั้ง toggle channel 2
กด 3 ครั้ง toggle channel 3
กด 4 ครั้ง toggle channel 4
กดค้าง ปิดทุก channel

การกดทุกๆหนึ่งครั้งจะทำให้ COUNT+1 และ TIMERCNT จะเป็น 0
ซึ่ง TIMERCNT จะเป็นเวลาหน่วงก่อน Execute คำสั่งตามค่าของ
COUNT. ซึ่งผมตั้งไว้ที่ 500ms. การกดเพื่อควบคุม แต่ละ channel
ช่วงการกดจะต้องไม่เกิน 500ms ในแต่ล่ะช่วง

หากกดค้างไว้ไม่ว่าในช่วงใดๆก็ตามจะปิดทุก channel

ส่วนในเรื่อง Beep sound
จากการทดลอง หาก Gen. เสียงโดย toggle pin มันจะมี
ปัญหาเรื่องการตอบสนองตอนกดปุ่มซึ่งต้องไปหยุดอยู่ที่
Sound Gen. routine มันเลยสะดุดๆ ผมเลย Gen. จาก PWM
แทน ซึ่ง work มากๆ

http://www.4shared.com/rar/iDzOOF9J/OneButton_withBeep.html


Control Servo motor (PIC16F887)

มาเล่น servo motor กันมั่ง

http://www.youtube.com/v/xnzf6ghAkKI

หลักการไม่มีอะไรมากครับ เอา timer 2 ตัวมาทำ โดยใช้ timer1 ทำฐานเวลา
ที่ 20 ms เพื่อ set port ทุกๆ 20ms และใช้ timer0 เป็นตัว clr port ตาม
เวลาที่กำหนด ตัวแปรการปรับมุมได้จากการอ่านค่าจาก ADC ความละเอียด
ที่ทำได้ อยูที่ 143 step

โดยอันดับแรกเมื่อ timer1 เกิด interrupt จะ set servo pin และ reload
ค่า duty ลง timer0 พร้อมกับ enable interrupt ของ timer0 เมื่อ timer0
over flow ก็จะเกิด interrupt ไป clear servo pin และปิด interrupt
ของตัว timer0 เอง เป็นโปรแกรมง่ายๆลองเอาไปต่อยอดกัน

ปล. servo ที่ผมใช้ค่าเวลากว้าง ถ้าใช้กับยี่ห้ออื่นให้ปรับที่ servo_min
กับ servo_max เอาครับ

http://www.4shared.com/rar/f7Xwjfj8/SERVO_MOTOR.html
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺

samira

link youtube ไม่ขึ้นครับ ต้องปรับใหม่แล้วละครับ

note : problem solved.
ขอบคุณครับ
" If you're born poor, it's not your mistake. But if you die poor, it's your mistake"
Bill Gates.

JENG

เซ็งตรงใส่ flash ไม่ได้นี่แหละ มาลุ้นว่าปี่นี้จะได้ใช้ tag นี้มั๊ย  ;D
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺


JENG

ใส่ flash ได้ อะไรๆก็ดีขึ้นเยอะ ...  ;D
สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺

PeeAke

อยากขยันๆ.. ทำไรมาแบ่งกันชื่นชมแบบนี้บ้างจัง