ออกแบบ Schematic , PCB และ Simulate ด้วย ” Proteus 6.1 “

article2004-01-04_01

 http://www.labcenter.co.uk Proteus เป็นโปรแกรมสำหรับออกแบบงจร แต่ไม่เฉพาะออกแบบวงจรเพียงอย่างเดียวเท่านั้น ยังสามารถจำลองการทำงานทั้งวงจรอนาล็อก ดิจิตอล และดิจิตอลไมโครคอนโทรลเลอร์ ได้อีกด้วย ที่ผมชอบมากที่สุดคือการจำลองการทำงานของไมโครคอนโทรลเลอร์ ซึ่งเราสามารถนำ HEX File มาใช้กับ MCU ในวงจรที่เราออกแบบไว้ได้อีกด้วย ผมมีเวอร์ชั่น 5 อยู่ตั้งนานมากแล้วเป็น Lite เวอร์ชั่น แต่ไม่ค่อยได้ใช้จริงจัง เมื่อวานเข้าเดินเล่นในอินเตอร์เน็ทอยู่ๆ ก็ไปได้เวอร์ชั่น 6.1 ติดมือกลับมาแถมเป็นเวอร์ชั่น Professional ซะด้วยแจ๋วจริงๆ หลังจากทำการติดตั้งเรียบร้อยแล้วเปิดขึ้นมาใช้งานก็พบกับหน้าตาของเวอร์ชั่นนี้ ที่ใช้งานสะดวกกว่าเวอร์ชั่นก่อน และยังเพิ่ม Componance ขึ้นอีกเยอะ ใครอยากได้เวอร์ชั่นทดลองใช้ก็โหลดได้จากเวบผู้พัฒนา http://www.labcenter.co.uk ปัจจุบันได้พัฒนามาจนถึงเวอ์ชั่น 6.3 แล้ว (จะหาเวอร์ชั่นเต็มแบบไม่เสียตังค์ได้จากที่ใหนหว่า ) และนี่คือคุณสมบัติของเวอร์ชั่นนี้ What's New In Proteus Version 6.1 Proteus 6.1 contains the following new features: Zoom in/Zoom out using the mouse-wheel. You can also adjust active components (pots, switches etc.) by holding down the ctrl key and […]

ควบคุมความเร็วมอเตอร์ DC

article2004-01-02_01

มอบของขวัญขึ้นปีใหม่ให้กับเพื่อนๆ ด้วยวงจรควบคุมความเร็วมอเตอร์ DC โดยใช้หลักการของ PWM (Pulse Width Modulate) คุณสมบัติของวงจรนี้คือ เพิ่มและลดความเร็วรอบของ DC Motor รูปที่ 1 วงจรควบคุมความเร็ว รูปที่ 2 วงจรขับมอเตอร์ จะใช้มอเตอร์ spec ใหนก็ออกแบบวงจรขับเอานะครับ ได้วงจรแล้วทีนี้ก็เขียนโปรแกรมกันตามนี้เลยครับ #include <16F628.h>#use delay(clock=4000000,RESTART_WDT)#fuses XT,WDT/*cycle time is (1/10000000)*4*1*128 = 51.2 us or 19.5 khzvalue of duty is 204 (100%)Motor speed control , 19.5KHz*//////////////////////////////int duty=0;/////////////////////////////void main() { setup_ccp1(CCP_PWM);setup_timer_2(T2_DIV_BY_1, 127, 1); while(true){if(input(pin_a0)) duty++; // speed incrementif(input(pin_a1)) duty–; // speed decrement if( duty>204 ) duty–;if( duty<1 ) duty++; set_pwm1_duty(duty); delay_ms(30);}}

การอินเตอร์เฟสและการเปลี่ยนแปลงสัญญาณ D/A-A/D [ by Mr.T ]

การอินเตอร์เฟสและการเปลี่ยนแปลงสัญญาณ D/A-A/D – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – — – – – – – – – – – คอมพิวเตอร์นั้นปกติจะมี พอร์ต (PORT) อยู่ในตัวมันเสมอ เพื่อเป็นการติดต่อกับอุปกรณ์ภายนอก เพื่อประโยชน์ ในการควบคุมอุปกรณ์ต่าง ๆ แต่ในหลาย ๆ กรณี อุปกรณ์จำนวนมาก ต้องถูกควบคุมทางสัญญาณ อนาล็อก (ANALOG) ซึ่งเป็นสัญญาณ ที่ต่อเนื่อง ตัวอย่างจากอุปกรณ์ เช่น ดีซีมอเตอร์ (ความเร็วของการหมุน) จะถูกควบคุมทางคอมพิวเตอร์จึงเป็นเหตุให้สัญญาณทางดิจิตอลที่เอ้าท์พุทต้องเปลี่ยนสัญญาณอนาล็อกให้เป็นอินพุทกับคอมพิวเตอร์นั้นก็กระทำการไม่ได้จึงต้องทำการแปลงสัญญาณอนาล็อกเป็นดิจิตอลเสียก่อน ในบทนี้ เราจะพูดภาพรวม […]

Step Motor [ by Mr.T ]

article2003-12-08_02

เรื่องราวของ step motor ที่หลายคนอยากรู้ และหลายคนได้รู้แล้ว ครั้งนี้ Mr.T เจ้าเดิมมีเอกสารดีๆ ไม่ได้เก็บไว้คนเดียวแต่เอามาแบ่งปันให้อ่านกัน เป็นเรื่องราวของ step motor แหมใจดีจริงๆ มีบทความดีๆ มาให้อ่านกันเรื่อยๆ ใครสนใจก็โหลดไปอ่านได้เลยครับ เป็นเอกสารชนิด pdf ประมาณ 802 KB Download Here

THE 555 IC

article2003-12-08_01

พอดีพี่ Mr.T อยากได้ตัวอย่างการใช้งาน IC เบอร์ 555 แล้วหาในเวบผมไม่เจอ ก็เลยแนะนำให้ผมเอาตัวอย่างลงเวบไว้ด้วย ตามใจพี่เขาหน่อย ไม่ได้ลงตัวอย่างเท่านั้นแต่เป็นตั้งแต่ขั้นตอนการออกแบบเลยครับ เป็นเวบของฝรั่งทำไว้ดีทีเดียว THE 555 IC / 555 Timer

ทดลองวงจรดิจิตอล กับไอซี TTL ด้วย WinBredboard (ยอดเยี่ยม)

article2003-07-24_01

มีเพื่อนๆ และน้องๆ หลายคนที่สนใจจะใช้งานไมโครคอนโทรลเลอร์ แต่ติดที่ว่าไม่มีพื้นฐานด้านอิเล็กทรอนิกส์โดยเฉพาะความเข้าใจในระบบดิจิตอลอันเป็นพื้นฐานสำคัญของไมโครคอนโทรลเลอร์ ครั้นจะเขียนบทความสอนโดยไม่มีรูปก็คงจะไม่ช่วยให้เข้าใจได้เร็วขึ้น แต่ถ้าต้องทำรูปประกอบบทความด้วยตัวผู้เขียนเองก็คงใช้เวลาไม่ใช่น้อยเลยทีเดียว ผมพยายามค้นหาโปรแกรมจำลองการทำงานของวงจรดิจิตอลเพื่อนำรูปการทดลองมาใช้สอนเพื่อนๆ หาอยู่นานก็ยังไม่ถูกใจ จนกระทั่งมีคนบอก URL สำหรับ download โปรแกรมอิเล็กทรอนิกส์ แถมเป็นคนไทยอีกต่างหาก ซึ่งผมไปสะดุดเจอบนเวบบอร์ดเข้า พอลองไปดูก็เจอโปรแกรมอิเล็กทรอนิกส์อยู่หลายโปรแกรมและแล้วผมก็พบ WinBredboard ซึ่งลองอ่านรายละเอียดโดยย่อแล้วน่าสนใจไม่น้อยเลย จึง download มาเก็บไว้นานพอสมควร และแล้วหนังสือ Hobby Electronics ก็เอาโปรแกรมนี้มาแนะนำ ถึงแม้ Hobby Electronics จะแนะนำไปแล้วก็ตาม ผมก็ไม่สนใจว่ามันจะซ้ำกันเพราะผมต้องการนำมาใช้สอนไม่ได้แนะนำอย่างเดียว จึงหาเวลากลับมาเขียนบทความให้อ่านกัน รูปที่ 1 หน้อจอของโปรแกรม WinBredboard ระบบที่ต้องการคือ Windows 3.1 1.4 meg of disk space ผมใช้กับ WinME ก็ใช้งานได้ดีไม่มีปัญหาอะไร จากหน้าตาของตัวโปรแกรมจะเห็นว่ามีชุดทดลองต่างๆ เหมือนกับบอร์ดทดลองจริงๆเลย การทดลองก็เหมือนกับเราใช้บอร์ดจริงๆ นั้นแหละครับ ว่าแต่เราจักกับส่วนต่างๆ กันก่อน Prototype Board ผมมักเรียกว่า “โฟโต้บอร์ด” ไม่รู้เหมือนกันครับออกเสียง โฟโต้ เข้าไปได้ยังไง “แล้วมันใช้ยังไงหละเนี่ย ?” อาจมีคำถามแบบนี้มาจากเพื่อนๆ ที่ไม่เคยใช้ นั่นนะซินะ ไม่เคยใช้แล้วจะรู้ได้ยังไง เอ้า มาดูซิว่ามันใช้ยังไง ดูรูปนี้นะ สังเกตุแถบที่ผมระบายสีเหลืองไว้ จะมี 2 แถบ คือแถบแนวตั้ง ABCDE แถวที่ […]

CCS PCWH with PCF8574A

article2003-05-27_01

ใน CCS นั้นมี function ในการติดต่อกับ I2C อยู่แล้วซึ่งช่วยอำนวยความสะดวกให้เราได้มาก โดยมีทั้งหมด4 function ดังนี้คือ I2C_START() เพื่อเริ่มการติดต่อกับ I2C I2C_WRITE() เพื่อเขียนข้อมูลลงใน I2C Bus I2C_READ() เพื่ออ่านข้อมูลจาก I2C Bus I2C_STOP() เพื่อยกเลิกการติดต่อกับ I2C จาก function เหล่านี้เราจึงไม่จำเป็นต้องเข้าใจเข้าใจรูปแบบการสื่อสารของ I2C แค่รู้วิธีการสั่งให้ PCF8574A อ่านหรือเขียนข้อมูลได้ก็พียงพอแล้ว โดยมีขั้นตอนดังนี้ กำหนดให้ PCF8574A เขียนข้อมูลออกมาที่พอร์ต P0 – P7 1. เริ่มติดต่อกับ I2C 2. ส่งคำสั่งควบคุมให้ PCF8574A เขียนข้อมูล 3. ส่ง data ให้ PCF8574A นำออกที่พอร์ต P0 – P7 4. ยกเลิกการติดต่อกับ I2C กำหนดให้ PCF8574A อ่านข้อมูลจากพอร์ต P0 – P7 1. เริ่มติดต่อกับ I2C 2. ส่งคำสั่งควบคุมให้ PCF8574A อ่านข้อมูล 3. อ่านข้อมูลพอร์ต P0 – P7 […]

C for PIC “PCWH BUILT-IN FUNCTIONS”

ประมวลฟังก์ชั่นต่างๆ ที่ PCWH มีให้ใช้งาน ผม copy มาจาก help ของตัวโปรแกรมเอง จะเห็นว่ามีฟังก์ชั่นให้ใช้งานอยู่อย่างมากมายเลยทีเดียว RS232 I/Ogetc() , putc() , gets() , puts() , printf() , kbhit() , set_uart_speed() , perror , assert I2C I/Oi2c_start() , i2c_stop() , I2C_read , i2c_write() , i2c_poll() Discrete I/Ooutput_low() , output_high() , output_float() , output_bit() , input() , output_X() , input_X() , port_b_pullups() , set_tris_X() SPI two wire I/Osetup_spi() , spi_read() , spi_write() , spi_data_is_in() Parallel Slave I/Osetup_psp() , psp_input_full() , psp_output_full() , psp_overflow() […]

PIC micro with C , แนะนำ CCS PCW

article2003-04-08_01

มาแล้วกับการเขียนโปรแกรมสำหรับ PIC ไมโครคอนโทลเลอร์ด้วยภาษาซี โดยใช้ CCS Compiler ก่อนอื่นขอแนะนำเจ้า CCS ให้สำหรับคนที่ยังไม่รู้ว่ามันคืออะไรก่อนนะครับ CCS คือ บริษัทผู้ผลิตโปรแกรมแปลภาษาซีที่ชื่อ PCW โดยแปลจากภาษาซีให้เป็นภาษาแอสแซมบลีและทำการแปลภาษาแอสแซมบลีให้เป็นภาษาเครื่องหรือก็คือเจ้า Hex File ที่เรานำไปโหลดให้กับ PIC นั่นเอง แท้จริงแล้ว PCW เป็นเพียง IDE เท่านั้น ตัวคอมไพล์เลอร์จริงๆจะมีอยู่ 3 ตัวด้วยกันก็คือ 1. PCB เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 12 บิต 2. PCM เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 14 บิต 3. PCH เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 16 และ 18 บิต รูปที่ 1 หน้าต่างของโปรแกรม CCS ก่อนที่จะทำการเขียนโปแกรมได้นั้นต้องทำการสร้าง Project ขึ้นมาก่อน โดยคลิกที่ Menu Bar ดังนี้ Project -> New -> PIC Wizard รูปที่ 2 การสร้าง Project ทำการตั้งชื่อ Project ตามที่ต้องการและคลิก OK […]

โปรแกรม รับข้อมูลจาก PCF8574 โดย Mr.T

'โปรแกรม รับข้อมูลจาก PCF8574 โดย SCL=PORTA.1 SDA=PORTA.2'เมื่อรับข้อมูลแล้วแสดงผลทาง PORTB'วันที่ 10 มี.ค. 46 โดย Mr.T BitCnt var byteI2COUT var byteI2CADD var byteI2CDATA var byteD var byteB var byteI2CIN var byte CMCON=$07TRISA=$0TRISB=$0 loop: I2CADD=0GoSub I2CRECPORTB=I2CINGoto loop ' Do it forever '************************************************************************'ส่งข้อมูลไปที่ PCF8574 โดยส่งข้อมูลจาก I2COUT'************************************************************************I2CSEND:GoSub STBit 'ส่งข้อมูลให้กับ PCF8574 สร้าง start conditionI2CDATA=$70+2*I2CADD 'RW=0GoSub GenDataI2CDATA=I2COUT 'ส่งข้อมูลที่อยู่ใน I2COUTGoSub GenDataGoSub STPBit 'สร้าง stop conditionreturn '************************************************************************'รับข้อจาก PCF8574 เก็บไว้ที่ I2CIN'************************************************************************I2CREC:GoSub STBit 'รับข้อมูลจาก PCF8574I2CDATA=$70+2*I2CADD+1 'RW=1GoSub GenData 'ส่ง control byteGoSub RecDataGoSub STPBit 'สร้าง stop conditionI2CIN=I2CDATA 'รับข้อมูลไว้ที่ I2CINreturn'************************************************************************'ส่งข้อมูลไปที่ PCF8574'************************************************************************GenData:For […]