Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
น้าจีใจดีมากเลยครับตัวนี้ก็กะจะเอามาทำตัวสั่งเล่นเพลงใน carpc นะครับแต่ยังไม่ได้ทำสักทีเห็นขนาดเล็กมากๆทำเป็น USB Device ได้ด้วย เอาเป็นว่าผมขอซื้อต่อจากน้าจีเพื่อเอามาศึกษาดูก็แล้วกันนะครับเท่าไหร่บอกมา่ทางเมลเลยครับ b_amnart@hotmail.com
ขอหมายเลขบัญชีน้าจีด้วยนะแล้วจะส่งที่อยู่ไปให้นะครับ
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
น้าจีใจดีมากเลยครับตัวนี้ก็กะจะเอามาทำตัวสั่งเล่นเพลงใน carpc นะครับแต่ยังไม่ได้ทำสักทีเห็นขนาดเล็กมากๆทำเป็น USB Device ได้ด้วย เอาเป็นว่าผมขอซื้อต่อจากน้าจีเพื่อเอามาศึกษาดูก็แล้วกันนะครับเท่าไหร่บอกมา่ทางเมลเลยครับ
b_amnart@hotmail.com
ขอหมายเลขบัญชีน้าจีด้วยนะแล้วจะส่งที่อยู่ไปให้นะครับ
ไม่ขายครับเอาไปเล่นฟรีๆครับส่งที่อยู่ทาง email มานะครับเดี๋ยวส่งให้ ผมได้มาฟรีครับยังไม่เคยเล่นด้วยน้าลองไปเล่นดูครับไฟเลี้ยงมันเอามาจาก usb แต่ถ้าจะใช้ทดลองในรถควรจะมีวงจร power supply ให้มันหน่อยครับแปลงไฟ 12V เป็น 5 V ก็ใช้ได้แล้วครับ
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
ไม่ขายครับเอาไปเล่นฟรีๆครับส่งที่อยู่ทาง email มานะครับเดี๋ยวส่งให้ ผมได้มาฟรีครับยังไม่เคยเล่นด้วยน้าลองไปเล่นดูครับไฟเลี้ยงมันเอามาจาก usb แต่ถ้าจะใช้ทดลองในรถควรจะมีวงจร power supply ให้มันหน่อยครับแปลงไฟ 12V เป็น 5 V ก็ใช้ได้แล้วครับ
ต้องขอบคุณน้าจีมากๆเลยนะครับกลัวว่าเอามาลองแล้วพลาดทำพังแย่แน่ๆครับยิ่งเป็นของใหม่ไม่เคยใช้งานด้วยคงขอรบกวนแค่คำปรึกษาจากน้าจีก็พอแล้วครับ :21-7:
1 ไฟล์แนบ
Re: OBD 2 + Electronic + Electric = Room
ลอกวงจรในส่วนของ MCP4922 จาก PCB wizard มาลงใน EAGLE แบบคร่าวดูก่อนได้ออกมาประมาณนี้ครับ ดูจากวงจรที่น้าจีทำเสร็จแล้ว VR ทำไมหายไปหนึ่งตัวล่ะครับ
ไฟล์แนบ 80479
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
ลอกวงจรในส่วนของ MCP4922 จาก PCB wizard มาลงใน EAGLE แบบคร่าวดูก่อนได้ออกมาประมาณนี้ครับ ดูจากวงจรที่น้าจีทำเสร็จแล้ว VR ทำไมหายไปหนึ่งตัวล่ะครับ
ไฟล์แนบ 80479
ผมไม่ใส่ VR ตรงปลดบูสท์ครับเพราะไม่ต้องการปรับเลยจั้มไฟไปเลยมันเป็นขา Vref ถ้าจั้มมันจะทำให้การแปลงค่า D to A ออกตามโปรแกรมที่เราเขียนเลยครับ ส่วน VR ตัวที่ใส่ไปมันอยู่ในส่วนของดันรางสมมุตว่าเราเขียนโปรแกรมไปแล้วมันยังดันต้นไม่ดีเราสามารถปรับลด Vref ได้ทำให้แรงดันที่ออกจาก output MCP4922 ลดลงตามไปด้วยเพราะดันรางต้องการลดค่าแรงดัน
-ถ้าต้องการทำกล่องคันเร่งก็ใช้วงจรนี้ได้ครับไม่ต้องใส่ VR ก็ได้จั้มไฟ 5 V เข้ามาเลยนี่ครับสำหรับการเขียนโปรแกรมกล่องคันเร่ง 1 step ง่ายๆเอาแบบที่ขับสบายๆไม่พุ่งไปทิ่มชาวบ้าน ภายใน code ผมขี้เกียจเปลี่ยนชื่อ sensor ผมเลยเอาชื่อเหมือนกล่องปลดบูสท์ดันรางเลยไม่ต้องงนะครับ
int railsensor=0;
int boostsensor=1;
int railvalue=0;
int boostvalue=0;
//----------------------ตัวแปรของ MCP4922 (Digital to Analog)
int CS = 8;
int SCK = 9;
int SDI = 10;
int LDAC = 11;
int SHDN = 12;
//-------------------------------function D2A------------------------------
void Write_MCP4922(unsigned char DAC_Channel,unsigned int DAC_Data) // Write DAC Output
{
digitalWrite(CS, LOW); // Enable MCP4922
switch (DAC_Channel) // Select DAC Channel(0=A,1=B)
{
case 0x00: DAC_Data |= 0x3000; // Write DAC-A
break;
case 0x01: DAC_Data |= 0xB000; // Write DAC-B
break;
}
shiftOut(SDI, SCK, MSBFIRST,(DAC_Data >> 8)& 0xFF); //MSB Data(High Byte)
shiftOut(SDI, SCK, MSBFIRST,DAC_Data & 0xFF); //LSB Data(Low Byte)
digitalWrite(CS, HIGH); // Disable MCP4922
digitalWrite(LDAC, LOW); // Enable Pulse Latch
digitalWrite(LDAC, HIGH);
}
//-----------------------------------------Setup_Function---------------------------
void setup()
{
pinMode(CS, OUTPUT);
pinMode(SCK, OUTPUT);
pinMode(SDI, OUTPUT);
pinMode(LDAC, OUTPUT);
pinMode(SHDN, OUTPUT);
digitalWrite(CS, HIGH); //Standby CS Signal
digitalWrite(SCK, LOW);
digitalWrite(SDI, LOW);
digitalWrite(LDAC, HIGH); //Standby LDAC Signal
digitalWrite(SHDN, HIGH); //Standby SHDN Signal
}
//--------------------------------------------loop_function---------------------------
void loop()
{
//----------------------------------------------read railsensor-------------------------------
// step1 uprail fuel pressure.
railvalue=analogRead(railsensor); //อ่านค่าจาก sensor วัดแรงดันน้ำมัน
if((railvalue>=220)&&(railvalue<1023)){
if((railvalue>=220)&&(railvalue<240)){railvalue=analogRead(railsensor)+10;}
else if((railvalue>=240)&&(railvalue<260)){railvalue=analogRead(railsensor)+20;}
else if((railvalue>=260)&&(railvalue<280)){railvalue=analogRead(railsensor)+30;}
else if((railvalue>=280)&&(railvalue<300)){railvalue=analogRead(railsensor)+40;}
else if((railvalue>=300)&&(railvalue<320)){railvalue=analogRead(railsensor)+50;}
else if((railvalue>=320)&&(railvalue<340)){railvalue=analogRead(railsensor)+60;}
else if((railvalue>=340)&&(railvalue<360)){railvalue=analogRead(railsensor)+70;}
else if((railvalue>=360)&&(railvalue<380)){railvalue=analogRead(railsensor)+80;}
else if((railvalue>=380)&&(railvalue<400)){railvalue=analogRead(railsensor)+90;}
else if((railvalue>=400)&&(railvalue<1023)){railvalue=analogRead(railsensor)+100;}
}
else {railvalue=analogRead(railsensor);}
railvalue=map(railvalue,0,1023,0,4095); //map parameter 'railvalue' from 1-1023 to 0-4095 (for DAC)
Write_MCP4922(0,railvalue); //write railvalue to DAC-A
boostvalue=analogRead(boostsensor); // อ่านค่าจาก sensor แรงดันอากาศ
if((boostvalue>=110)&&(boostvalue<1023)){
if((boostvalue>=110)&&(boostvalue<120)){boostvalue=analogRead(boostsensor)+5;}
else if((boostvalue>=120)&&(boostvalue<130)){boostvalue=analogRead(boostsensor)+10;}
else if((boostvalue>=130)&&(boostvalue<140)){boostvalue=analogRead(boostsensor)+15;}
else if((boostvalue>=140)&&(boostvalue<150)){boostvalue=analogRead(boostsensor)+20;}
else if((boostvalue>=150)&&(boostvalue<160)){boostvalue=analogRead(boostsensor)+25;}
else if((boostvalue>=160)&&(boostvalue<170)){boostvalue=analogRead(boostsensor)+30;}
else if((boostvalue>=170)&&(boostvalue<180)){boostvalue=analogRead(boostsensor)+35;}
else if((boostvalue>=180)&&(boostvalue<190)){boostvalue=analogRead(boostsensor)+40;}
else if((boostvalue>=190)&&(boostvalue<200)){boostvalue=analogRead(boostsensor)+45;}
else if((boostvalue>=200)&&(boostvalue<1023)){boostvalue=analogRead(boostsensor)+50;}
}
else {boostvalue=analogRead(boostsensor);}
boostvalue=map(boostvalue,0,1023,0,4095); //map parameter 'boostvalue' from 1-1023 to 0-4095 (for DAC)
Write_MCP4922(1,boostvalue); //write boostvalue to DAC-B
}
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
ผมไม่ใส่ VR ตรงปลดบูสท์ครับเพราะไม่ต้องการปรับเลยจั้มไฟไปเลยมันเป็นขา Vref ถ้าจั้มมันจะทำให้การแปลงค่า D to A ออกตามโปรแกรมที่เราเขียนเลยครับ ส่วน VR ตัวที่ใส่ไปมันอยู่ในส่วนของดันรางสมมุตว่าเราเขียนโปรแกรมไปแล้วมันยังดันต้นไม่ดีเราสามารถปรับลด Vref ได้ทำให้แรงดันที่ออกจาก output MCP4922 ลดลงตามไปด้วยเพราะดันรางต้องการลดค่าแรงดัน
-ถ้าต้องการทำกล่องคันเร่งก็ใช้วงจรนี้ได้ครับไม่ต้องใส่ VR ก็ได้จั้มไฟ 5 V เข้ามาเลยนี่ครับสำหรับการเขียนโปรแกรมกล่องคันเร่ง 1 step ง่ายๆเอาแบบที่ขับสบายๆไม่พุ่งไปทิ่มชาวบ้าน ภายใน code ผมขี้เกียจเปลี่ยนชื่อ sensor ผมเลยเอาชื่อเหมือนกล่องปลดบูสท์ดันรางเลยไม่ต้องงนะครับ
ขอบคุณมากครับสำหรับโค๊ด ถ้าทำกล่องคันเร่ง VR ไม่ต้องใส่ทั้ง 2 ตัวใช่ไหมครับน้า
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
ขอบคุณมากครับสำหรับโค๊ด ถ้าทำกล่องคันเร่ง VR ไม่ต้องใส่ทั้ง 2 ตัวใช่ไหมครับน้า
ใส่ไว้ก็ดีครับเผื่ออยากเอากล่องไปทำดันรางจะได้ไม่ต้องใส่เพิ่มทีหลัง ถ้าไม่ใส่ก็ได้มาปรับตัวเลขที่ โปรแกรมเอา
2 ไฟล์แนบ
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
โดยหลักการของกล่องคันเร่งไฟฟ้าช่วงเดินเบาค่าแรงดัน sensor หลัก 1V sensor รอง 0.5V ช่วงนี้เขาจะไม่ไปยุ่งมันเลยครับเขาจะเริ่มหลอกที่มีการกดคันเร่งแล้วนิดเดียวเช่น 1.1V หลอกให้ส่งค่าไป ECU 1.5 V ประมาณนี้ครับยิ่งหลอกมากการออกตัวยิ่งรุนแรงกระโจนออกแบบควันท่วมเลยยังได้ครับแต่ถ้าหลอกเกินมากก็จะไฟแสดงแล้วก็จะถูกล็อคความเร็วแล้วก็คลานไปอย่างช้าๆโอกาสที่จะค้างแล้ววิ่งเกิดขึ้นน้อยมากครับเท่าที่ทดสอบมา
:smiley-transport012
เท่าที่ลองครับ ถ้าจ่ายเข้า มากกว่า 5v มันก็ทวีแรงดันขึ้นไปอีกครับจะเป็นอย่างที่ น้า จี บอก
และที่ผมเห็นว่ามันน่าจะ มีจุดที่เราเข้าไปแก้ได้และน่าจะทำให้ได้ตามนั้น
1 แรงดันเวลาที่เรากดคันเร่งมันจะขึ้นแบบ หน่วง ๆ ครับจึงทำให้คันเร่งขึ้นช้า
2 แต่เหตุที่ทำแบบนั้น เข้าใจว่า เวลาเร่งต้องการให้มันนิ่ม ๆครับ เพราะว่าแรงดันค่อย ๆ ขึ้นไม่กระโดดเหมือนระบบสลิงดึงแบบเก่า
3 เวลาที่ถอนคันเร่ง ระบบเก่าจะหัวทิ่มครับ เพราะมันถูกหยุดทันทีทันใด
แต่ระบบหน่วงนี้ จะไม่เกิดอาการดังกล่าวเพราะการจุดระเบิดจะค่อย ๆลดลง
4 วิธีที่จะทำให้มันเร่งได้เร็ว ก็คือ หลอกแรงดันอย่างที่น้า จี ทำ
ซึงนี่คือแรงดันที่ผมเช็คมาได้ครับ
-ปรกติ ไม่กดคันเร่ง คันเร่งหลัก 1v กดสุด 4.67 V
-ปรกติ ไม่กดคันเร่ง คันเร่งสำรอง 0.5v กดสุด 2.33 V
หลักในการจ่ายแรงดันให้ ECU โดยการรับไฟ มา 5V แล้วมาถูกควบคุมการจ่ายแรงดัน โดยคันเร่ง ( หรี่ หรือเพิ่ม)และถ้าอยากจะทำระบบ ควบคุมความเร็วคงที่ ก็มาเล่นกันตรงนี้ได้ครับ:smiley-transport012
*อาจมีภาพไม่สุภาพไม่เหมาะสม โปรดใช้วิจารณญานในการชม *
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
YanyonG
เท่าที่ลองครับ ถ้าจ่ายเข้า มากกว่า 5v มันก็ทวีแรงดันขึ้นไปอีกครับจะเป็นอย่างที่ น้า จี บอก
และที่ผมเห็นว่ามันน่าจะ มีจุดที่เราเข้าไปแก้ได้และน่าจะทำให้ได้ตามนั้น
1 แรงดันเวลาที่เรากดคันเร่งมันจะขึ้นแบบ หน่วง ๆ ครับจึงทำให้คันเร่งขึ้นช้า
2 แต่เหตุที่ทำแบบนั้น เข้าใจว่า เวลาเร่งต้องการให้มันนิ่ม ๆครับ เพราะว่าแรงดันค่อย ๆ ขึ้นไม่กระโดดเหมือนระบบสลิงดึงแบบเก่า
3 เวลาที่ถอนคันเร่ง ระบบเก่าจะหัวทิ่มครับ เพราะมันถูกหยุดทันทีทันใด
แต่ระบบหน่วงนี้ จะไม่เกิดอาการดังกล่าวเพราะการจุดระเบิดจะค่อย ๆลดลง
4 วิธีที่จะทำให้มันเร่งได้เร็ว ก็คือ หลอกแรงดันอย่างที่น้า จี ทำ
ซึงนี่คือแรงดันที่ผมเช็คมาได้ครับ
-ปรกติ ไม่กดคันเร่ง คันเร่งหลัก 1v กดสุด 4.67 V
-ปรกติ ไม่กดคันเร่ง คันเร่งสำรอง 0.5v กดสุด 2.33 V
หลักในการจ่ายแรงดันให้ ECU โดยการรับไฟ มา 5V แล้วมาถูกควบคุมการจ่ายแรงดัน โดยคันเร่ง ( หรี่ หรือเพิ่ม)และถ้าอยากจะทำระบบ ควบคุมความเร็วคงที่ ก็มาเล่นกันตรงนี้ได้ครับ:smiley-transport012
*อาจมีภาพไม่สุภาพไม่เหมาะสม โปรดใช้วิจารณญานในการชม *
ขอบคุณน้า kanto นะครับที่ช่วยมาแชร์ข้อมูลการวัดไฟของคันเร่งไฟฟ้าเก็บข้อมูลไว้แล้ว :)
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
ขอบคุณน้า kanto นะครับที่ช่วยมาแชร์ข้อมูลการวัดไฟของคันเร่งไฟฟ้าเก็บข้อมูลไว้แล้ว :)
น้าอยากหลอกมากหรือน้อยก็แก้ตัวเลขเอานะครับโดยจะเป็นสัดส่วนกันระหว่าง sensor หลักกับ sensor รอง อัตราส่วน 2:1 แก้ที่ตัวหนังสือสีแดงครับ
railvalue=analogRead(railsensor); //อ่านค่าจาก sensor วัดแรงดันน้ำมัน
if((railvalue>=220)&&(railvalue<1023)){ sensor หลักเริ่มเพ่มค่าตั้งแต่ (5/1023)*220=1.075 V ถ้าเริ่มน้อยกว่า 1 รอบเดินเบาจะสูง
if((railvalue>=220)&&(railvalue<240)){railvalue=an alogRead(railsensor)+10;}
else if((railvalue>=240)&&(railvalue<260)){railvalue=an alogRead(railsensor)+20;}
else if((railvalue>=260)&&(railvalue<280)){railvalue=an alogRead(railsensor)+30;}
else if((railvalue>=280)&&(railvalue<300)){railvalue=an alogRead(railsensor)+40;}
else if((railvalue>=300)&&(railvalue<320)){railvalue=an alogRead(railsensor)+50;}
else if((railvalue>=320)&&(railvalue<340)){railvalue=an alogRead(railsensor)+60;}
else if((railvalue>=340)&&(railvalue<360)){railvalue=an alogRead(railsensor)+70;}
else if((railvalue>=360)&&(railvalue<380)){railvalue=an alogRead(railsensor)+80;}
else if((railvalue>=380)&&(railvalue<400)){railvalue=an alogRead(railsensor)+90;}
else if((railvalue>=400)&&(railvalue<1023)){railvalue=a nalogRead(railsensor)+100;}
}
else {railvalue=analogRead(railsensor);}
railvalue=map(railvalue,0,1023,0,4095); //map parameter 'railvalue' from 1-1023 to 0-4095 (for DAC)
Write_MCP4922(0,railvalue); //write railvalue to DAC-A
boostvalue=analogRead(boostsensor); // อ่านค่าจาก sensor แรงดันอากาศ
if((boostvalue>=110)&&(boostvalue<1023)){
if((boostvalue>=110)&&(boostvalue<120)){boostvalue =analogRead(boostsensor)+5;}sensor รองเริ่มเพิ่มค่าตั้งแต่ (5/1023)*110=0.537V ถ้าน้อยกว่า 0.5V รอบเดินเบาจะสูง
else if((boostvalue>=120)&&(boostvalue<130)){boostvalue =analogRead(boostsensor)+10;}
else if((boostvalue>=130)&&(boostvalue<140)){boostvalue =analogRead(boostsensor)+15;}
else if((boostvalue>=140)&&(boostvalue<150)){boostvalue =analogRead(boostsensor)+20;}
else if((boostvalue>=150)&&(boostvalue<160)){boostvalue =analogRead(boostsensor)+25;}
else if((boostvalue>=160)&&(boostvalue<170)){boostvalue =analogRead(boostsensor)+30;}
else if((boostvalue>=170)&&(boostvalue<180)){boostvalue =analogRead(boostsensor)+35;}
else if((boostvalue>=180)&&(boostvalue<190)){boostvalue =analogRead(boostsensor)+40;}
else if((boostvalue>=190)&&(boostvalue<200)){boostvalue =analogRead(boostsensor)+45;}
else if((boostvalue>=200)&&(boostvalue<1023)){boostvalu e=analogRead(boostsensor)+50;}
}
else {boostvalue=analogRead(boostsensor);}
boostvalue=map(boostvalue,0,1023,0,4095); //map parameter 'boostvalue' from 1-1023 to 0-4095 (for DAC)
Write_MCP4922(1,boostvalue); //write boostvalue to DAC-B
}
1 ไฟล์แนบ
Re: OBD 2 + Electronic + Electric = Room
[quote=jee4x4;345701]quote]
น้า จี ครับ ผมคงต้องรบกวน File Proteus ตัวอย่างตามที่น้า Post ขึ้นมานี้ไปลองศึกษาบ้างจะได้ใหมครับ เพราะว่าตอนนี้ยังไม่เข้าใจโครงสร้างของวงจรครับ
แต่ตอนนี้กำลังศึกษาความหมายและที่มาของ Program ภาษา C จากตำราเรียนลัดอยู่ครับ ต้องยอมรับว่า เริ่ม 0 กับ MCU จริง ๆ ครับ
และน้า ๆ ท่านผู้ชมที่สนใจเรียน MCU จาก 0 กับอาจารย์ จี และ อาจารย์ Visa:yenta4-emoticon-002
ก็หาตำราเล่มนี้มาอ่านกันดูครับ ซึ่งผมพอจะเข้าใจกว่าแต่ก่อนบ้าง:emotion_006_onion:
เช่น
else if((railvalue>=240)&&(railvalue<260)){railvalue=an alogRead(railsensor)+20;}
บรรทัดนี้คือ ถ้าค่าแรงดันที่มาจาก railsensor มากกว่าหรือเท่ากับ 1.1736v (240 คือค่าของเลขฐาน 2 ทั้ง 10 bit คือ 2^10 =1024
โดยค่าที่เริ่มนับจาก 0 (นับ 1 )ถึง 1024 จะได้ รวม 1023 หลัก
ถ้าอยากรู้ว่า ค่า 240 ที่ อาจารย์ จี เขียนมาคือเท่าใดก็
เอาค่า Volt ทั้งหมดที่เราจะแปลงเป็นคำสั่งระบบ Digital ตั้ง( 5v) หารด้วย 1023=0.00489 v คูณ 240 =1.1736v)
เครื่องหมาย && ในภาษา C แปลว่า และ
และถ้าค่าแรงดันที่มาจาก railsensor น้อยกว่า 260*0.00489=1.2714
คือค่าที่อยู่ในช่วง 1.1736(240) ถึง 1.2714 (260)ให้บวกเพิ่มจากค่า Sensor จริงอีกค่าละ 0.0978 v
(0.00489*20=0.0978v)
นี่คือตัวอย่างการตีความภาษา C ครับ
หวังว่าจะเป็นประโยชน์แก่ คอซนทั้งปวงนะครับ:woot:
Re: OBD 2 + Electronic + Electric = Room
[quote=YanyonG;345952]
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
quote]
น้า จี ครับ ผมคงต้องรบกวน File Proteus ตัวอย่างตามที่น้า Post ขึ้นมานี้ไปลองศึกษาบ้างจะได้ใหมครับ เพราะว่าตอนนี้ยังไม่เข้าใจโครงสร้างของวงจรครับ
แต่ตอนนี้กำลังศึกษาความหมายและที่มาของ Program ภาษา C จากตำราเรียนลัดอยู่ครับ ต้องยอมรับว่า เริ่ม 0 กับ MCU จริง ๆ ครับ
และน้า ๆ ท่านผู้ชมที่สนใจเรียน MCU จาก 0 กับอาจารย์ จี และ อาจารย์ Visa:yenta4-emoticon-002
ก็หาตำราเล่มนี้มาอ่านกันดูครับ ซึ่งผมพอจะเข้าใจกว่าแต่ก่อนบ้าง:emotion_006_onion:
เช่น
else if((railvalue>=240)&&(railvalue<260)){railvalue=an alogRead(railsensor)+20;}
บรรทัดนี้คือ ถ้าค่าแรงดันที่มาจาก railsensor มากกว่าหรือเท่ากับ 1.1736v (240 คือค่าของเลขฐาน 2 ทั้ง 10 bit คือ 2^10 =1024
โดยค่าที่เริ่มนับจาก 0 (นับ 1 )ถึง 1024 จะได้ รวม 1023 หลัก
ถ้าอยากรู้ว่า ค่า 240 ที่ อาจารย์ จี เขียนมาคือเท่าใดก็
เอาค่า Volt ทั้งหมดที่เราจะแปลงเป็นคำสั่งระบบ Digital ตั้ง( 5v) หารด้วย 1023=0.00489 v คูณ 240 =1.1736v)
เครื่องหมาย && ในภาษา C แปลว่า และ
และถ้าค่าแรงดันที่มาจาก railsensor น้อยกว่า 260*0.00489=1.2714
คือค่าที่อยู่ในช่วง 1.1736(240) ถึง 1.2714 (260)ให้บวกเพิ่มจากค่า Sensor จริงอีกค่าละ 0.0978 v
(0.00489*20=0.0978v)
นี่คือตัวอย่างการตีความภาษา C ครับ
หวังว่าจะเป็นประโยชน์แก่ คอซนทั้งปวงนะครับ:woot:
นั่นแหละครับน้ามาถูกทางแล้ว ถูกต้องทุกอย่างเลยที่กล่าวมา ผมขอออกตัวก่อนะครับว่าผมไม่เซียนเรื่องนี้เท่าไรก็หัดเขียน เรียนทางลัดอย่างน้าตอนนี้แหละแต่ก็พอมีพื้นภาษา C มาบ้างสมัยเรียนอิเล็ก ปวช. ปวส. แต่ตอนนี้รู้สึกว่าภาษาที่ใช้เขียนง่ายกว่าตอนนั้นมากเหมือนกันดูจาก code program ที่ผมเขียนมันเหมือนภาษาพูดเลยอ่านแล้วก็พอจะมองออกว่าอะไรเป็นอะไร ผมว่า MCU มันมีดีหลายอย่างขึ้นอยู่ว่าเราจะใส่สมองให้มันทำอะไร อิอิ สู้ต่อไปครับ แต่หนังสือที่น้าเขียนจะเป็น PIC แต่ที่ผมใช้มันเป็น AVR นะครับ code บางตัวอาจไม่เหมือนกันแต่มีพื้นฐานจากภาษา C เหมือนกันครับ ถ้าอยากเขียน arduino อย่างผมก็เข้าไป load โปรแกรม ที่ www.arduino.cc ครับ
Re: OBD 2 + Electronic + Electric = Room
[quote=YanyonG;345952]
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
quote]
น้า จี ครับ ผมคงต้องรบกวน File Proteus ตัวอย่างตามที่น้า Post ขึ้นมานี้ไปลองศึกษาบ้างจะได้ใหมครับ เพราะว่าตอนนี้ยังไม่เข้าใจโครงสร้างของวงจรครับ
แต่ตอนนี้กำลังศึกษาความหมายและที่มาของ Program ภาษา C จากตำราเรียนลัดอยู่ครับ ต้องยอมรับว่า เริ่ม 0 กับ MCU จริง ๆ ครับ
และน้า ๆ ท่านผู้ชมที่สนใจเรียน MCU จาก 0 กับอาจารย์ จี และ อาจารย์ Visa:yenta4-emoticon-002
ก็หาตำราเล่มนี้มาอ่านกันดูครับ ซึ่งผมพอจะเข้าใจกว่าแต่ก่อนบ้าง:emotion_006_onion:
เช่น
else if((railvalue>=240)&&(railvalue<260)){railvalue=an alogRead(railsensor)+20;}
บรรทัดนี้คือ ถ้าค่าแรงดันที่มาจาก railsensor มากกว่าหรือเท่ากับ 1.1736v (240 คือค่าของเลขฐาน 2 ทั้ง 10 bit คือ 2^10 =1024
โดยค่าที่เริ่มนับจาก 0 (นับ 1 )ถึง 1024 จะได้ รวม 1023 หลัก
ถ้าอยากรู้ว่า ค่า 240 ที่ อาจารย์ จี เขียนมาคือเท่าใดก็
เอาค่า Volt ทั้งหมดที่เราจะแปลงเป็นคำสั่งระบบ Digital ตั้ง( 5v) หารด้วย 1023=0.00489 v คูณ 240 =1.1736v)
เครื่องหมาย && ในภาษา C แปลว่า และ
และถ้าค่าแรงดันที่มาจาก railsensor น้อยกว่า 260*0.00489=1.2714
คือค่าที่อยู่ในช่วง 1.1736(240) ถึง 1.2714 (260)ให้บวกเพิ่มจากค่า Sensor จริงอีกค่าละ 0.0978 v
(0.00489*20=0.0978v)
นี่คือตัวอย่างการตีความภาษา C ครับ
หวังว่าจะเป็นประโยชน์แก่ คอซนทั้งปวงนะครับ:woot:
น้า kanto เก่งจังครับอธิบายแบบละเอียดเลย
[quote=jee4x4;346158]
อ้างอิง:
โพสต้นฉบับโดยคุณ
YanyonG
นั่นแหละครับน้ามาถูกทางแล้ว ถูกต้องทุกอย่างเลยที่กล่าวมา ผมขอออกตัวก่อนะครับว่าผมไม่เซียนเรื่องนี้เท่าไรก็หัดเขียน เรียนทางลัดอย่างน้าตอนนี้แหละแต่ก็พอมีพื้นภาษา C มาบ้างสมัยเรียนอิเล็ก ปวช. ปวส. แต่ตอนนี้รู้สึกว่าภาษาที่ใช้เขียนง่ายกว่าตอนนั้นมากเหมือนกันดูจาก code program ที่ผมเขียนมันเหมือนภาษาพูดเลยอ่านแล้วก็พอจะมองออกว่าอะไรเป็นอะไร ผมว่า MCU มันมีดีหลายอย่างขึ้นอยู่ว่าเราจะใส่สมองให้มันทำอะไร อิอิ สู้ต่อไปครับ แต่หนังสือที่น้าเขียนจะเป็น PIC แต่ที่ผมใช้มันเป็น AVR นะครับ code บางตัวอาจไม่เหมือนกันแต่มีพื้นฐานจากภาษา C เหมือนกันครับ ถ้าอยากเขียน arduino อย่างผมก็เข้าไป load โปรแกรม ที่
www.arduino.cc ครับ
น้าจีใช้หนังสือเล่มไหนสำหรับศึกษา AVR ครับ
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
น้าจีใช้หนังสือเล่มไหนสำหรับศึกษา AVR ครับ
ตัวนี้ครับ เฉพาะหนังสือนะครับ บอร์ดใช้ของ freeduino
http://www.ett.co.th/product2009/ET-...NING-BOX-1.jpg
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
ขอบคุณครับน้าแล้วจะสั่งมาลองอ่านดูบ้างครับ
Re: OBD 2 + Electronic + Electric = Room
น้าจีซื้อ Mcp4922 แบบ DIP ที่ไหนครับน้า ลองออกแบบ PCB แล้วยังไม่ถูกใจกะว่าจะใช้ PCBแบบด้านเดียวแต่ถ้าใช้ตัวถังแบบ SOIC เส้นมันเล็กมากเลยครับกลัวจะกัดปริ้นเองไม่ได้ :D
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
น้าจีซื้อ Mcp4922 แบบ DIP ที่ไหนครับน้า ลองออกแบบ PCB แล้วยังไม่ถูกใจกะว่าจะใช้ PCBแบบด้านเดียวแต่ถ้าใช้ตัวถังแบบ SOIC เส้นมันเล็กมากเลยครับกลัวจะกัดปริ้นเองไม่ได้ :D
ซื้อจาก ETT ครับแต่แพงตัว 200 แพงกว่า MCU อีกน้าอำนาจสั่งซื้อ et-mcp4922 เลยก็ได้ครับได้บอร์ดมาด้วยราคาต่างกันไม่ถึง 100 Ett ic แพงครับตอนนั้นซื้อมา 5 ตัว และฝากพี่ที่ ปตท.ซื้อมาอีก 10 ตัวราคา 150 เป็นของนำเข้าจากสิงคโปร
2 ไฟล์แนบ
Re: OBD 2 + Electronic + Electric = Room
ขอบคุณน้าจีสำหรับแหล่งซื้อ MCP9422 นะครับ
หลังจากได้ออกแบบ PCB มาหลายวันก็ได้ออกมาตามนี้ครับมี 3 จั๊มเปอร์ไม่สวยเท่าไหร่แต่อันนี้คิดว่าลงตัวที่สุดแล้วยินดีรับคำติชมครับถ้าไม่ดีหรือมีจุดที่ต้องแก้ไขบอกกันได้นะครับ
วงจร
ไฟล์แนบ 80871
PCB
ไฟล์แนบ 80872
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
vista
ขอบคุณน้าจีสำหรับแหล่งซื้อ MCP9422 นะครับ
หลังจากได้ออกแบบ PCB มาหลายวันก็ได้ออกมาตามนี้ครับมี 3 จั๊มเปอร์ไม่สวยเท่าไหร่แต่อันนี้คิดว่าลงตัวที่สุดแล้วยินดีรับคำติชมครับถ้าไม่ดีหรือมีจุดที่ต้องแก้ไขบอกกันได้นะครับ
วงจร
ไฟล์แนบ 80871
PCB
ไฟล์แนบ 80872
สวยครับน้าว่าแต่วงจรมันขาดชุด osc ไปรึเปล่าครับที่มี cystal 16 Mhz และ C 22pF อะครับ และขา 1 mcu จะไฟและมี sw reset ด้วยครับ แต่ดูแล้วการ wire สายไม่เหมือนของนะครับ ของผมใช้ขา 14-18 ต่อกับ MCP4922
2 ไฟล์แนบ
Re: OBD 2 + Electronic + Electric = Room
อ้างอิง:
โพสต้นฉบับโดยคุณ
jee4x4
สวยครับน้าว่าแต่วงจรมันขาดชุด osc ไปรึเปล่าครับที่มี cystal 16 Mhz และ C 22pF อะครับ และขา 1 mcu จะไฟและมี sw reset ด้วยครับ แต่ดูแล้วการ wire สายไม่เหมือนของนะครับ ของผมใช้ขา 14-18 ต่อกับ MCP4922
น้าจีครับผมจะใช้บอร์ด MCU ตัวนี้ครับ ET-Easy168 STAMP วางลงบน PCB ที่ออกแบบไว้ครับและขาใช้งานจะแตกต่างกับวงจรที่น้าทำครับเพราะรูปแบบของไอซีแตกต่างกันแต่ผมต่อขาใช้งานให้เหมือกับวงจรของน้าเลยส่วนโค๊ตของโปรแกรมคงไม่ต้องแก้ไขใช่ไหมครับ
ไฟล์แนบ 80879
ไฟล์แนบ 80880