วันนี้ทำโปรแกรมอ่านค่าเซ็นเซอร์วัดอุณหภูมิครับซึงผมที่ได้ทำโปรแกรมสามตัวครับโดยจะเอามาคำนวณหาค่าโดยใช้ฟังก์ชั้นทางคณิตศาสตร์ในการคำนวณครับ
const int analogInPin = A0;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 0;
float Td = 0;
const long table [72][2] =
{
{-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
{-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
{-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
{25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
{55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
{85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
{115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
{145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
{175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
{210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
{245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
{280,143},{285,133},{290,124},{295,115},{300,107}};
void setup()
{
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.print("sensor = " );
Serial.print(sensorValue);
//RValue = ((50/(5-((sensorValue*5)/1024)))-10);
RValue = (sensorValue*5.0000)/1024.0000;
Serial.print(" \t R = " );
Serial.print(RValue);
Rsensor = ((50/(5 - RValue))-10)*1000;
Serial.print(" Rsensor = " );
Serial.println(Rsensor);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Serial.print(table[i][1]); //R_MAX
Serial.print(',');
Serial.print(table[i][0]); //T_MAX
Serial.print(',');
Serial.print(table[i-1][1]); //R_MIN
Serial.print(',');
Serial.println(table[i-1][0]); //T_MIN
Ta = ((table[i-1][1])-Rsensor);
Serial.print(" Ta = " );
Serial.print(Ta);
Tb = Ta/((table[i-1][1])-(table[i][1]));
Serial.print(" Tb = " );
Serial.print(Tb);
Tc = Tb*5;
Serial.print(" Tc = " );
Serial.print(Tc);
Temperature = (table[i][0])-Tc;
Serial.print(" Temperature = " );
Serial.println(Temperature);
break;
}
}
delay(5000);
}
ส่วนโปรแกรมที่เส็ดใช้ได้แล้วนะครับจะเป็นโปรแกรมนี้ครับ
const int analogInPin = A0;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
float Temperature = 0;
float Ta = 0;
float Tb = 0;
float Tc = 0;
float Td = 0;
const long table [72][2] =
{
{-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
{-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
{-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
{25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
{55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
{85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
{115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
{145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
{175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
{210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
{245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
{280,143},{285,133},{290,124},{295,115},{300,107}};
void setup()
{
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
RValue = (sensorValue*5.0000)/1024.0000;
Rsensor = ((50/(5 - RValue))-10)*1000;
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>table[i][1])
{
Ta = ((table[i-1][1])-Rsensor);
Tb = Ta/((table[i-1][1])-(table[i][1]));
Tc = Tb*5;
Temperature = (table[i][0])-Tc;
Serial.print(" Temperature = " );
Serial.println(Temperature);
break;
}
}
delay(5000);
}
วันอังคารที่ 30 มิถุนายน พ.ศ. 2558
วันจันทร์ที่ 29 มิถุนายน พ.ศ. 2558
วันที่ 30 ของการฝึกงานที่ FIBO
วันนี้ตอนเช้าอาจารได้มีการปนะชุมเล็กๆของห้องช็อปได้มีการพูดคุยกันเรื่องการคืบหน้าของงานในแต่ละคนว่าไปถึงไหนกันแล้วครับคุยกันว่าอาจารย์ทำอะไรอยู่ว่านักศึกษาทำไรกันอยู่ครับซึ่งผมก็ยังไม่เคยเข้าประชุมมาก่อนนี้เป็นการเข้าประชุมครั่งแรกก้รู้ศึกดีมากครับได้รู้ว่าแต่ละคนกำลังทำอะไรกันบ้างครับ
ตอนบ่ายผมได้ทำโปรแกรมวัดค่าอุณหภูมิโดยการอ่านค่าความต้านทานจากเช็นเชอร์โดนมีตารางเทียค่าจากดาต้าชีทสามารถโหลดได้ที่นี้ครับ
www.farnell.com/datasheets/102485.pdf
สวนผมของโปรแกรมครับจะได้แบบนี้ครับ
ตอนบ่ายผมได้ทำโปรแกรมวัดค่าอุณหภูมิโดยการอ่านค่าความต้านทานจากเช็นเชอร์โดนมีตารางเทียค่าจากดาต้าชีทสามารถโหลดได้ที่นี้ครับ
www.farnell.com/datasheets/102485.pdf
สวนผมของโปรแกรมครับจะได้แบบนี้ครับ
ส่วนของโปรแกรมครับจะเป็นแบบนี้ครับ
const int analogInPin = A0;
int sensorValue = 0;
float RValue = 0;
float Rsensor = 0;
const long temperature [72][2] =
{
{-55,10723236},{-50,7366689},{-44,5132757},{-40,3624165},{-35,2591304},
{-30,1874913},{-25,1371886},{-20,1014545},{-15,757881},{-10,571590},
{-5,435026},{0,333964},{5,258497},{10,201659},{15,158499},{20,125468},
{25,100000},{30,80223},{35,64759},{40,52589},{45,42951},{50,35272},
{55,29119},{60,24161},{65,20144},{70,16874},{75,14198},{80,11998},
{85,10181},{90,8674},{95,7419},{100,6369},{105,5487},{110,4744},
{115,4115},{120,3581},{125,3126},{130,2737},{135,2404},{140,2117},
{145,1869},{150,1655},{155,1469},{160,1307},{165,1166},{170,1043},
{175,934},{180,839},{185,755},{190,681},{195,615},{200,557},{205,505},
{210,459},{215,418},{220,382},{225,349},{230,319},{235,292},{240,269},
{245,247},{250,227},{255,210},{260,194},{265,179},{270,166},{275,154},
{280,143},{285,133},{290,124},{295,115},{300,107}};
void setup()
{
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.print("sensor = " );
Serial.print(sensorValue);
//RValue = ((50/(5-((sensorValue*5)/1024)))-10);
RValue = (sensorValue*5.0000)/1024.0000;
Serial.print(" \t R = " );
Serial.print(RValue);
Rsensor = ((50/(5 - RValue))-10)*1000;
Serial.print(" Rsensor = " );
Serial.println(Rsensor);
for(int i =0 ; i<72 ; i++)
{
if(Rsensor>temperature[i][1])
{
Serial.print(temperature[i][1]); //R_MAX
Serial.print(',');
Serial.print(temperature[i][0]); //T_MAX
Serial.print(',');
Serial.print(temperature[i-1][1]); //R_MIN
Serial.print(',');
Serial.println(temperature[i-1][0]); //T_MIN
break;
}
}
delay(1000);
}
วันอาทิตย์ที่ 28 มิถุนายน พ.ศ. 2558
วันพฤหัสบดีที่ 25 มิถุนายน พ.ศ. 2558
วันที่ 28 ของการฝึกงานที่ FIBO ครับ
วันนี้ออกแบบตัวจับหัวฉีดพลาสติกครับในการออกแบบคือจะติดพัดลมระบายความร้อนให่กับหัวฉีดพลาสติกครับแบบที่ผมได้จะเป็นหน้าตาแบบนี้ครับ
วันพุธที่ 24 มิถุนายน พ.ศ. 2558
วันที่ 27 ของการฝึกงานที่ FIBO
ผมได้มีโอกาสที่ได้รองศึกษา 3d printer delta ซึ่งเพื่อนผมจะใช้งานผมก็สนใจเป็นอย่างมาในการที่จะทำความเข้าใจในการใช้งาน และศึกษาหัวฮีดพลาสติก ว่าจะนำมาใช้งานกับเครือง 3d printer ของพี่ปูครับ ตามที่ผมดูมันจะต้องมีพัดลมระบายความร้อนให้กับหัวฉีดพลาสติก ครับ
ส่วนของพี่ปูจะเป็นแบบนี้ครับ
วันอังคารที่ 23 มิถุนายน พ.ศ. 2558
วันที่ 26 ของการฝึกงานที่ FIBO
ผมศึกษาวิธีใช้งานของเซ็นเซอร์วัดความร้อน
เพื่อที่จะนำมาใช้กับปริ้นเตอร์ 3D ของพี่ปู ครับ
ผมได้เขียนโปรแกรมทดรองครับแต่ใช้ LM 35 แทนครับพอเซ็นเชอร์รับค่าความร้อนถึงจุดที่กำหนดให้ LED ติดครับ
ผมได้เขียนโปรแกรมทดรองครับแต่ใช้ LM 35 แทนครับพอเซ็นเชอร์รับค่าความร้อนถึงจุดที่กำหนดให้ LED ติดครับ
ส่วนของโปรแกรมครับ
const int analogInPin = A4;
int LED = 8;
int sensorValue = 0;
float voltageValue = 0;
float temperatureValue = 0;
void setup()
{
pinMode(LED,OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
voltageValue = (sensorValue*5.0000)/1024.0000;
temperatureValue = voltageValue*100;
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t voltage = ");
Serial.print(voltageValue);
Serial.print(" V\t temperature = ");
Serial.print(temperatureValue);
Serial.println(" C");
delay(1000);
if (temperatureValue >= 25)
{
digitalWrite(LED,HIGH);
}
else{
digitalWrite(LED,LOW);
}
}
วันจันทร์ที่ 22 มิถุนายน พ.ศ. 2558
วันที่ 25 ของการฝึกงานที่ FIBO
วันนี้พี่ปูได้ให้งานมาคือคอนโทรลสเต็ปมอเตอร์ป้อนเส้นพราสติกให้กับหัว 3d printer ผมจึงไปศึกษา shield
และให้ศึกษาวิธีการใช้งานกับ arduino mega 2560 ผมจึงได้อ่านศึกษาครับ
#define X_DIR 28
#define X_STP 26
void step (boolean dir, byte dirPin, byte stepperPin, int steps, int RPM)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (150000/RPM);
digitalWrite (stepperPin, LOW);
delayMicroseconds (150000/RPM);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
step (LOW, X_DIR, X_STP, 200, 200 );
}
และมีการทดรองโปรแกรมว่าถ้าหัวฉีดพราสติกร้อนได้ที่แล้วให้มีการทำงานคือมีการป้อนเส้นพราสติกแต่จำรองการทำงานให้ LED ติดแทนครับคือมีการรับค่าจารตัวอ่านค่าความร้อนมาผมจำรองให้หัวรับความร้อนเป็น 25 ํC LED ติดถ้าต้ำกว่า 25 ํC LED จะตับ ครับ
และมีการทดรองโปรแกรมว่าถ้าหัวฉีดพราสติกร้อนได้ที่แล้วให้มีการทำงานคือมีการป้อนเส้นพราสติกแต่จำรองการทำงานให้ LED ติดแทนครับคือมีการรับค่าจารตัวอ่านค่าความร้อนมาผมจำรองให้หัวรับความร้อนเป็น 25 ํC LED ติดถ้าต้ำกว่า 25 ํC LED จะตับ ครับ
const int analogInPin = A4;
int LED = 8;
int sensorValue = 0;
float voltageValue = 0;
float temperatureValue = 0;
void setup()
{
pinMode(LED,OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
voltageValue = (sensorValue*5.0000)/1024.0000;
temperatureValue = voltageValue*100;
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t voltage = ");
Serial.print(voltageValue);
Serial.print(" V\t temperature = ");
Serial.print(temperatureValue);
Serial.println(" C");
delay(1000);
if (temperatureValue >= 25)
{
digitalWrite(LED,HIGH);
}
else{
digitalWrite(LED,LOW);
}
วันอาทิตย์ที่ 21 มิถุนายน พ.ศ. 2558
วันที่ 24 ของการฝึกงานที่ FIBO
1.ทำสเต็ปมอเตอร์ให้หมุนเร็วหมุนช้าใด้ตามใจชอบครับจากโปรแกรมเดิม
#define EN 8
#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
delay (50);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (1000);
digitalWrite (stepperPin, LOW);
delayMicroseconds (1000);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
step (false, X_DIR, X_STP, 200);
delay (1000);
}
จะเห็นว่ามีการใช้ delayMicroseconds (1000);
มี 2 delay ในการหมุนหนึ่งสเต็บ ถ้าต้องการให้หมุนหนึ่งรองเราต้องใช้ 200 สเต็ปจึงจะได้หนึ่งรอบถ้าต้งการใจะคำนวณหาความเร็วรอบของสเต็ปมมอเตอร์
เราต้องนำค่า delay มาจะได้ 0.002 s/stp ,200 สเต็ป,เวลา 1 นาธี = 60 s
จะได้ 0.002*200 = 0.4 s/rev
ดังนั้น 60/0.4 = 150 rev/s
ผมจึงทำงานซุ่มหาค่าที่เร็วที่สุด คือ 300 rev/s และความเร็วต่ำสุดคือ 100 rev/s
ฉนั้น เราจึงนำค่าความเร็ว สูงสุด มาคูณกับค่า delay จะได้ 300*500 = 150000
แล้วนำค่า 150000 มาหารด้วยค่า RPM จะได้ delay เป็น delayMicroseconds (150000/RPM);
โปรแกรมที่เส็ดแล้วคือ
#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps, int RPM)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (150000/RPM);
digitalWrite (stepperPin, LOW);
delayMicroseconds (150000/RPM);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
for (int RPM = 100; RPM <=300; RPM++) //หมุนากค่าต่ำสุดคือ 100 รอบ/นาที
{
step (false, X_DIR, X_STP, 10, RPM);
}
for (int RPM = 300; RPM >=100; RPM--) //หมุนากค่าต่ำสุดคือ 300 รอบ/นาที
{
step (false, X_DIR, X_STP, 10, RPM);
}
}
จะเห็นว่ามีการใช้ delayMicroseconds (1000);
มี 2 delay ในการหมุนหนึ่งสเต็บ ถ้าต้องการให้หมุนหนึ่งรองเราต้องใช้ 200 สเต็ปจึงจะได้หนึ่งรอบถ้าต้งการใจะคำนวณหาความเร็วรอบของสเต็ปมมอเตอร์
เราต้องนำค่า delay มาจะได้ 0.002 s/stp ,200 สเต็ป,เวลา 1 นาธี = 60 s
จะได้ 0.002*200 = 0.4 s/rev
ดังนั้น 60/0.4 = 150 rev/s
ผมจึงทำงานซุ่มหาค่าที่เร็วที่สุด คือ 300 rev/s และความเร็วต่ำสุดคือ 100 rev/s
ฉนั้น เราจึงนำค่าความเร็ว สูงสุด มาคูณกับค่า delay จะได้ 300*500 = 150000
แล้วนำค่า 150000 มาหารด้วยค่า RPM จะได้ delay เป็น delayMicroseconds (150000/RPM);
โปรแกรมที่เส็ดแล้วคือ
#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps, int RPM)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (150000/RPM);
digitalWrite (stepperPin, LOW);
delayMicroseconds (150000/RPM);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
for (int RPM = 100; RPM <=300; RPM++) //หมุนากค่าต่ำสุดคือ 100 รอบ/นาที
{
step (false, X_DIR, X_STP, 10, RPM);
}
for (int RPM = 300; RPM >=100; RPM--) //หมุนากค่าต่ำสุดคือ 300 รอบ/นาที
{
step (false, X_DIR, X_STP, 10, RPM);
}
}
วันพฤหัสบดีที่ 18 มิถุนายน พ.ศ. 2558
วันที่ 23 ของการฝึกงานที่ FIBO
1. พี่ปูได้ให้งานมาทำครับคือให้ทำสเต็ปมอเตอร์ให้คอนโทรลความเร็วของสเต็ปมอเตอร์ให้มีความเร็วช้าเร็วได้ผมจรึงได้อ่านเพื่อนำความรู้มาทำครับผมได้อ่านหนังสือ
และได้ดู VDO อธิบายการใช้ สเต็ปมอเตอร์ครับ
https://www.youtube.com/watch?v=uBZjTzukUXY
https://www.youtube.com/watch?v=bltMgWkM6YU
และตอนบ่ายอาจารย์สยาม เจริญเสียง พาไปเที่ยวงาน คอมมาร์ทครับในงานมีของมากมายครับมีแต่ของใหม่ที่ยังไม่เคยเห็นขายที่ไหนเลยครับสุดท้ายอาจารย์ได้พาไปเลี้ยง MK ด้วยครับอาจารย์ใจดีมากเลยครับ
https://www.youtube.com/watch?v=uBZjTzukUXY
https://www.youtube.com/watch?v=bltMgWkM6YU
และตอนบ่ายอาจารย์สยาม เจริญเสียง พาไปเที่ยวงาน คอมมาร์ทครับในงานมีของมากมายครับมีแต่ของใหม่ที่ยังไม่เคยเห็นขายที่ไหนเลยครับสุดท้ายอาจารย์ได้พาไปเลี้ยง MK ด้วยครับอาจารย์ใจดีมากเลยครับ
วันพุธที่ 17 มิถุนายน พ.ศ. 2558
วันที่ 22 ของการฝึกงานที่ FIBO
1.วันนี้ส่วนใหญ่ผมจะอ่านวิธีใช่งาน Electrical Conductivity Kit ผมจะศึกษาให้ดีก่อนใช่งานจริงครับซึงราค่ามันแพงมากครับจึงจำเป็นต้องรู้รายระเอียดให้ดีก่อนลงมือทำครับ
และงานของพรุ่งนี้คือการ calibrate ค่ามาตรฐานของการวัดค่าความนำกระแสไฟฟ้าครับ มีหน่วยเป็น hS ครับ
ขอมูลที่ผมศึกษามาจากที่นี้ครับ -http://www.thaieasyelec.com/products/sensors/ph-d-o-orp/electrical-conductivity-kit-detail.html
รูปที่ทำการทดรองครับ
รูปที่ทำการทดรองครับ
และมีโปรแกรมมาให้ดูด้วยครับ
#include <SoftwareSerial.h>
#define rxpin 2 //rx กำหนดที่ขา 2
#define txpin 3 //tx กำหนดที่ขา 3
SoftwareSerial myserial(rxpin, txpin); //รับและส่งข้อมูลทาง rx และ tx
String inputstring = "";
String sensorstring = "";
boolean input_stringcomplete = false; //รับค่า input เป็น 0 หรือ LOW
boolean sensor_stringcomplete = false; //กำหนดให้ค่า sensor เป็น 0 หรือ LOW
void setup()
{
Serial.begin(38400); // รับหรือส่งข้อมูลด้วยความเร็ว 38400
myserial.begin(38400); //รับหรือส่งข้อมูลไปยัง mtserial ด้วนความเร็ว 38400
inputstring.reserve(5);
sensorstring.reserve(30);
}
void serialEvent() //เป็นฟังก์ชั้นเมื่อมีการใช้ Serial.read() จะเข้ามาทำงานในฟังก์ชั้นนี้
{
char inchar = (char)Serial.read();
inputstring += inchar;
if(inchar == '\r') {input_stringcomplete = true;}
}
void loop()
{
if (input_stringcomplete)
{
myserial.println(inputstring);
inputstring = "";
input_stringcomplete = false;
}
while (myserial.available())
{
char inchar = (char)myserial.read();
sensorstring += inchar;
if (inchar == '\r') {sensor_stringcomplete = true;}
}
if (sensor_stringcomplete)
{
Serial.println(sensorstring);
sensorstring = "";
sensor_stringcomplete = false;
}
}
และงานของพรุ่งนี้คือการ calibrate ค่ามาตรฐานของการวัดค่าความนำกระแสไฟฟ้าครับ มีหน่วยเป็น hS ครับ
วันอังคารที่ 16 มิถุนายน พ.ศ. 2558
วันที่ 21 ของการฝึกงานที่ FIBO
1.ทำความเข้าใจกับโปรแกรมอ่านค่าจากเซ็นเซอร์ครับ
- การต่ออุปรกรณ์ครับ
- การต่ออุปรกรณ์ครับ
-หน้าจอแสดงผลครับ
การแสดงผมจะแสดงเป็นสีช่องคือช่องแรกจะแสดง Conductivity
ช่องที่สองจะแสดงเป็น Total Dissolved Solids
ช่องที่สามจะแสดงเป็น Salinity
ช่องที่สี่จะแสดงเป็น Specific Gravity
ที่มาของข้อมูลครับ http://atlas-scientific.com/product_pages/probes/ec_k1-0.html?2. ดูวธีลง solidworks 2015 แล้วทำการติดตั้งครับผมจะออกแบบหุ่นยนต์เพื่อจะเอาไปเป็นโปรเจคของผมครับเลยลองศึกษาว่าวิธีใช้โปรแกรมทำอย่างไรบ้างเวลาที่หมดไปวันนี้คือหมดกับการดู youtube สอนออกแบบสิ่งของง่ายๆ ครับ
ลิงค์อ้างอิงครับ - https://www.youtube.com/watch?v=r7GwUUGBW5Q
-https://www.youtube.com/watch?v=DIJKA08nj_Q
-https://www.youtube.com/watch?v=xLd8Ds0mFeY
ช่องที่สองจะแสดงเป็น Total Dissolved Solids
ช่องที่สามจะแสดงเป็น Salinity
ช่องที่สี่จะแสดงเป็น Specific Gravity
ที่มาของข้อมูลครับ http://atlas-scientific.com/product_pages/probes/ec_k1-0.html?2. ดูวธีลง solidworks 2015 แล้วทำการติดตั้งครับผมจะออกแบบหุ่นยนต์เพื่อจะเอาไปเป็นโปรเจคของผมครับเลยลองศึกษาว่าวิธีใช้โปรแกรมทำอย่างไรบ้างเวลาที่หมดไปวันนี้คือหมดกับการดู youtube สอนออกแบบสิ่งของง่ายๆ ครับ
ลิงค์อ้างอิงครับ - https://www.youtube.com/watch?v=r7GwUUGBW5Q
-https://www.youtube.com/watch?v=DIJKA08nj_Q
-https://www.youtube.com/watch?v=xLd8Ds0mFeY
วันจันทร์ที่ 15 มิถุนายน พ.ศ. 2558
วันที่ 20 ของการฝึกงานที่ FIBO
พี่ในท์ให้ทำโปรแกรมวันค่าความนำกระแสไฟฟ้าโดยหน้าตาของเซ็นเซอร์จะเป็นประมาณนี้ครับ
#include <SoftwareSerial.h>
#include <SoftwareSerial.h>
#define rxpin 2 //rx กำหนดที่ขา 2
#define txpin 3 //tx กำหนดที่ขา 3
SoftwareSerial myserial(rxpin, txpin); //รับและส่งข้อมูลทาง rx และ tx
String inputstring = "";
String sensorstring = "";
boolean input_stringcomplete = false; //รับค่า input เป็น 0 หรือ LOW
boolean sensor_stringcomplete = false; //กำหนดให้ค่า sensor เป็น 0 หรือ LOW
void setup()
{
Serial.begin(38400); // รับหรือส่งข้อมูลด้วยความเร็ว 38400
myserial.begin(38400); //รับหรือส่งข้อมูลไปยัง mtserial ด้วนความเร็ว 38400
inputstring.reserve(5);
sensorstring.reserve(30);
}
void serialEvent() //เป็นฟังก์ชั้นเมื่อมีการใช้ Serial.read() จะเข้ามาทำงานในฟังก์ชั้นนี้
{
char inchar = (char)Serial.read();
inputstring += inchar;
if(inchar == '\r') {input_stringcomplete = true;}
}
void loop()
{
if (input_stringcomplete)
{
myserial.print(inputstring);
inputstring = "";
input_stringcomplete = false;
}
while (myserial.available())
{
char inchar = (char)myserial.read();
sensorstring += inchar;
if (inchar == '\r') {sensor_stringcomplete = true;}
}
if (sensor_stringcomplete)
{
Serial.print(sensorstring);
sensorstring = "";
sensor_stringcomplete = false;
}
}
วันศุกร์ที่ 12 มิถุนายน พ.ศ. 2558
วันที่ 19 ของการฝึกงานที่ FIBO
1.ทำการบ้านครับพี่ปูให้หาวิธีการเขียนฟังก์ชั้นมีอยู่ 4 แบบมีอะไรบ้างและตัวอย่าง
ตอบ 1. ฟังก์ชั้น Setup() เป็นฟังก์ชั้นประกาศตัวแปรที่จะนำมาใช้ในโปรแกรม
ตัวอย่าง void setup ()
{
pinMode (13,OUTPUT); //เรียกใช้ pin 13 output
digitalWrite (13,LOW); //pin 13 = low
}
2.ฟังก์ชั้น loop() เป็นฟังก์ชั้นที่ทำงานเช่นให้ LED กระพริบมันจะทำงานวนลูปอยู่อย่างนั้นตลอดครับ
ตัวอย่าง void loop()
{
digitalWrite(13,HIGH); //LED ติด
delay(1000);
digitalWrite(13,LOW); // LED ดับ
delay(1000);
}
3.ฟังก์ชั้น interrupt () เป็นฟังกืชั้นเกียวกับการขัดจังหวะการทำงานของโปรแกรม ถ้ามีการ interrupt ไม่ว่าโปรแกรมจะทำอะไรอยู่ก็ตามก็ต้องหยุดการทำงานมาทำ interrupt ก่อนแล้วค่อยกลับไปทำงานขอโปรแกรมต่อครับ
ตัวอย่าง / Interrupt INT0 (Port PD2)
ISR (INT0_vect)
{
if (i)
sbi(PORTA,0); // Set bit
else
cbi(PORTA,0); // Clear bit
i = !i; // Toggle bit
delay_ms(200); // Delay debound
ตอนบ่ายผมได้ทำโปรแกรมกดสวิทช์แล้วให้มอเตอร์หมุนครับโดยการสั่งทาง serialpoptc ครับแต่โปรแกรมมันยังไม่สมบูรณ์ครับคือมันยังกดแล้วไม่หมุนบางครั้งก้หมุนผมจึงคิดว่าต้องใช้ interrupt
เข้ามาครับแต่วันนี้ได้แค่นี้ก็ดีใจแล้วครับ
ตอบ 1. ฟังก์ชั้น Setup() เป็นฟังก์ชั้นประกาศตัวแปรที่จะนำมาใช้ในโปรแกรม
ตัวอย่าง void setup ()
{
pinMode (13,OUTPUT); //เรียกใช้ pin 13 output
digitalWrite (13,LOW); //pin 13 = low
}
2.ฟังก์ชั้น loop() เป็นฟังก์ชั้นที่ทำงานเช่นให้ LED กระพริบมันจะทำงานวนลูปอยู่อย่างนั้นตลอดครับ
ตัวอย่าง void loop()
{
digitalWrite(13,HIGH); //LED ติด
delay(1000);
digitalWrite(13,LOW); // LED ดับ
delay(1000);
}
3.ฟังก์ชั้น interrupt () เป็นฟังกืชั้นเกียวกับการขัดจังหวะการทำงานของโปรแกรม ถ้ามีการ interrupt ไม่ว่าโปรแกรมจะทำอะไรอยู่ก็ตามก็ต้องหยุดการทำงานมาทำ interrupt ก่อนแล้วค่อยกลับไปทำงานขอโปรแกรมต่อครับ
ตัวอย่าง / Interrupt INT0 (Port PD2)
ISR (INT0_vect)
{
if (i)
sbi(PORTA,0); // Set bit
else
cbi(PORTA,0); // Clear bit
i = !i; // Toggle bit
delay_ms(200); // Delay debound
}
4.ฟังก์ชั้น serialpoptc() เป็นฟังก์ชั้นสื่อสารอนุกรมเช่น arduino to arduino
ตัวอย่าง
4.ฟังก์ชั้น serialpoptc() เป็นฟังก์ชั้นสื่อสารอนุกรมเช่น arduino to arduino
ตัวอย่าง
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
ตอนบ่ายผมได้ทำโปรแกรมกดสวิทช์แล้วให้มอเตอร์หมุนครับโดยการสั่งทาง serialpoptc ครับแต่โปรแกรมมันยังไม่สมบูรณ์ครับคือมันยังกดแล้วไม่หมุนบางครั้งก้หมุนผมจึงคิดว่าต้องใช้ interrupt
เข้ามาครับแต่วันนี้ได้แค่นี้ก็ดีใจแล้วครับ
ส่วนของโปรแกรมนะครับ
อาดูโน่ตัวติดกับ CNC shield ครับ
อาดูโน่ตัวติดกับ CNC shield ครับ
#define EN 8 //enable
#define X_DIR 5 //direction
#define X_STP 2 //step
int incomingByte = 0;
int BYTE = 0;
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (800);
digitalWrite (stepperPin, LOW);
delayMicroseconds (800);
}
}
void setup ()
{
Serial.begin(9600);
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop() {
if (Serial.available() > 0) {
incomingByte= Serial.read();
Serial.print ("> ");
Serial.println (incomingByte,BYTE);
if (incomingByte == 'A') {
step1();
}
if (incomingByte == 'B') {
step2();
}
}
}
void step1 (void)
{
step (HIGH, X_DIR, X_STP, 800); // call function
// delay(100);
}
void step2 (void){
step (LOW, X_DIR, X_STP, 800); // call function
//delay(100);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
อาดูโน่ตัวรับค่าสวิทช์ ครับ
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
pinMode(2,INPUT_PULLUP);
attachInterrupt(0, Wap, LOW);
Serial.begin(9600);
}
void loop() {
Serial.println("B");
delay(200);
}
void Wap()
{
Serial.println("A");
while(digitalRead(2)==LOW);
วันพฤหัสบดีที่ 11 มิถุนายน พ.ศ. 2558
วันที่ 18 ของการฝึกงานที่ FIBO
ผมอ่านหนังสือใน inex เป็นหนังสือภาษา C/C++ เล่มนี้ครับ http://issuu.com/innovativeexperiment/docs/pop-xt_educationkit_130805
#define EN 8 //enable
ตอนบ่ายพี่ปูได้สอนโปรแกรมและอธิบายให้ผมเข้าใจว่าการทำงานของโปรแกรมมันทำงายอย่างไรผมจึงเข้าใจในโปรแกรมเป็นย่างมากครับซึงผมทำให้มอเตอร์หมุมทวนและตามเข็มนาฬิกาได้แล้วครับได้การบ้านมาด้วยครับ โปรแกรมจะเป็นแบบนี้ครับ
#define EN 8 //enable
#define X_DIR 5 //direction
#define X_STP 2 //step
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (800);
digitalWrite (stepperPin, LOW);
delayMicroseconds (800);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
step (HIGH, X_DIR, X_STP, 400); // call function
delay(1000);
step (LOW, X_DIR, X_STP, 400);
delay(1000);
}
วันพุธที่ 10 มิถุนายน พ.ศ. 2558
วันที่ 17 ของการฝึกงานที่ FIBO
วันนี้ผมได้ทำการติดตังโปรแกรม GRBLสำหรับ CNC shield หน้าตามันจะเป็นประมาณนี้ครับ
ใช้ในการคอนโทรลมอเตอร์ทั่งสามแกน คือ X Y Z แต่ผมยังไม่ได้ทำความเข้าใจในเรืองนี้มากนักครับ
โปรแกรมนี้มันจะต่อกับอาดุโน่ได้งายมากครับ
โปรแกรมนี้มันจะต่อกับอาดุโน่ได้งายมากครับ
ผมได้รองติดตั้งโปรแกรมออกแบบ 3D solidwork 2015 แต่ติดตั้งไม่ได้ครับไม่รู้เป็นอะไรรองทำหลายครั่งมาแต่ก็ทำไม่ได้อยู่ดีครับ
ผมเตรียมตัวที่จะรองออกแบบโดยการดู youtube ครับได้ดูอยู่หลายคลิปมากครับเช่น
-https://www.youtube.com/watch?v=JyOsv8Gc9S4
-https://www.youtube.com/watch?v=xLd8Ds0mFeY
-https://www.youtube.com/watch?v=youvc8V1j3U
-https://www.youtube.com/watch?v=JyOsv8Gc9S4
-https://www.youtube.com/watch?v=xLd8Ds0mFeY
-https://www.youtube.com/watch?v=youvc8V1j3U
วันอังคารที่ 9 มิถุนายน พ.ศ. 2558
วันที่ 16 ของการฝึกงานที่ FIBO
1.วันนี้มีคนมาดูงานที่ FIBO ครับพวดผมได้เตรียมของมานำเสนอด้วยครับโดยนำเจ้า POY ของพี่เครืองกลมีรูปมาให้ดูด้วยครับ
และแล้วแขกก็มาถึงครับผมไม่ได้พูดไรเลยครับมีแต่พี่ไนท์และพี่ต้อมเป็นคนพรีเซ้นโปรเจคของพวกพี่ๆครับ
ตอนบ่ายมีน้องๆจากโรงเรียนมัธยมมาดูด้วยครับแต่น่าเสียดายผมลืมเก็บภาพครับน้องๆน่ารักมากครับสนใจในสิ่งที่พี่ๆพรีเซ้นเป็นอย่างมาก
2.ตอนที่ว่างผมได้ทำวงจรสเต็ปมอเตอร์เล่นๆๆครับจากการทำได้ผลลัพธ์ คือสามารถทำให้มันหมุนได้ครับจากที่ไม่เคยทำมาก่อนเลยได้รู้จักกับเจ้า CNC SHIELD มันทำหน้าที่จ่านกระแสให้กับสเต็ปมอเตอร์มีรูปมาให้ดูครับ
2.ตอนที่ว่างผมได้ทำวงจรสเต็ปมอเตอร์เล่นๆๆครับจากการทำได้ผลลัพธ์ คือสามารถทำให้มันหมุนได้ครับจากที่ไม่เคยทำมาก่อนเลยได้รู้จักกับเจ้า CNC SHIELD มันทำหน้าที่จ่านกระแสให้กับสเต็ปมอเตอร์มีรูปมาให้ดูครับ
ส่วนโปรแกรมจะเป็นประมาณนี้ครับ
#define EN 8
#define X_DIR 5
#define X_STP 2
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
delay (50);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (800);
digitalWrite (stepperPin, LOW);
delayMicroseconds (800);
}
}
void setup ()
{
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop ()
{
step (false, X_DIR, X_STP, 200);
delay (1000);
}
วันจันทร์ที่ 8 มิถุนายน พ.ศ. 2558
วันที่ 15 ของการฝึกงานที่ FIBO
1.ผมได้เข้าไปอ่าน 3D Printer เพื่อศึกษาหลังการทำงานและอุปกรณ์ของ 3D Printer และทำความเข้าใจกับ 3D Printer จากการอ่านทำให้ผมเข้าใจในการทำงานและหน้าที่ของอุปกรณ์แต่ละชิ้นของ3D Printer ว่ามีหน้าที่อะไรลิงค์ที่ผมเข้าไปอ่านนะ ครับ
- http://www.inventor-3d.com/3d-printer-introduction/
- http://www.inventor-3d.com/3d-printer-introduction/
2.ผมอ่านเจอแล้วคิดว่าเจ่งดีครับคือเครืองบินบังคับด้วยรีโมทบังคับวิทยุหน้าตามันจะเป็นแบบนี้ครับ
ว่าด้วยเรื่องไรสาระกันเลยครับผมอยากทำมากเลยครับเครื่องบินบังครับ แต่ติดที่ว่ายังไม่มีความรู้พอที่จะทำได้แต่ต้องทำให้ได้ครับไม่มีไรเกินความสามารถของผมไปได้หรอกครับ 5555 คือผมชอบทำของเล่นเแงอยู่แล้วครับถ้าซือมามันก้เลนไม่สนุกครับผมไม่ได้ทำเองหน้าตามันจะเป็นประมาณนี้ครับ
ได้ทั่งเล่นและก็ได้ความรู้มากมายเลครับถ้าทำในสิงที่ชอมยังไงก็ไม่น่าเบื่อครับทำนะไม่อยากครับแต่
ตอนที่วัสดุอุปกรณ์ยังไม่มีทีจะทำครับ
3.สึกษาการคอนโทรลมอเตอร์ด้วยอาดูโน่ครับผมศึกษาอยู่นานเลยครับแต่ยังไม่เข้าใจอยู่ดีครับผมได้คึกษาอยู่ที่หน้าเว็ปนี้ครับ
-http://www.arduitronics.com/article/arduino-and-motor-control-part-3-stepper-motor
ตอนที่วัสดุอุปกรณ์ยังไม่มีทีจะทำครับ
3.สึกษาการคอนโทรลมอเตอร์ด้วยอาดูโน่ครับผมศึกษาอยู่นานเลยครับแต่ยังไม่เข้าใจอยู่ดีครับผมได้คึกษาอยู่ที่หน้าเว็ปนี้ครับ
-http://www.arduitronics.com/article/arduino-and-motor-control-part-3-stepper-motor
สมัครสมาชิก:
บทความ (Atom)