วิธีการวัดมุมเอียงโดยใช้เซนเซอร์วัดมุม SCA60C และดำเนินการตามค่ามุมที่วัดได้
บทช่วยสอนนี้สำรวจเซ็นเซอร์วัดมุม SCA60C ซึ่งเป็นวิธีที่คุ้มค่าในการวัดความเอียงและการวางแนวในโปรเจกต์หุ่นยนต์และอิเล็กทรอนิกส์ของคุณ เซ็นเซอร์นี้ให้เอาต์พุตแรงดันไฟฟ้าแบบแอนะล็อกที่สอดคล้องกับมุมของมัน ซึ่ง Arduino สามารถอ่านและแปลงเป็นการวัดองศาที่แม่นยำระหว่าง 0 ถึง 180 องศา โปรเจกต์นี้เหมาะสำหรับการเพิ่มการรับรู้ตำแหน่งให้กับการใช้งานที่หลากหลาย
ต่อไปนี้เป็นวิธีปฏิบัติจริงสองสามวิธีที่คุณสามารถใช้เซ็นเซอร์นี้ในงานสร้างของคุณเอง:
- การควบคุมแขนหุ่นยนต์: ตรวจสอบตำแหน่งของแต่ละข้อต่อเพื่อให้แน่ใจว่าการเคลื่อนไหวแม่นยำและปลอดภัย
- ระบบปรับระดับ: สร้างแพลตฟอร์มปรับระดับอัตโนมัติสำหรับกล้อง แผงโซลาร์เซลล์ หรืออุปกรณ์ที่ละเอียดอ่อนอื่นๆ
- สัญญาณเตือนที่เปิดใช้งานการเคลื่อนไหว: ตรวจจับเมื่ออุปกรณ์หรือวัตถุถูกย้ายจากตำแหน่งที่ปรับเทียบเดิม
- ศิลปะแบบโต้ตอบ: สร้างชิ้นงานที่เปลี่ยนพฤติกรรมหรือการแสดงผลตามการเอียงของมัน
- การตอบสนองการวางแนว: ให้การตอบสนองด้วยภาพแบบเรียลไทม์บนหน้าจอสำหรับมุมเงยหรือมุมเอียงของอุปกรณ์
คำแนะนำนี้จะพาคุณผ่านการทำงานของเซ็นเซอร์ วิธีเชื่อมต่อกับ Arduino และวิธีใช้โค้ดที่ให้มาเพื่ออ่านและดำเนินการกับข้อมูลมุม
ฮาร์ดแวร์และส่วนประกอบ
เพื่อทำตามโปรเจกต์นี้ คุณจะต้องมีส่วนประกอบต่อไปนี้:
- บอร์ด Arduino (Uno, Nano, Mega ฯลฯ)
- โมดูลเซ็นเซอร์วัดมุม SCA60C
- เบรดบอร์ดและสายจัมเปอร์
- LED สองดวง (ไม่บังคับ สำหรับการสาธิตสัญญาณเตือน)
- ตัวต้านทาน 220 โอห์มสองตัว (ไม่บังคับ สำหรับ LED)
เซ็นเซอร์ SCA60C เป็นโมดูลขนาดกะทัดรัดที่ส่งออกแรงดันไฟฟ้าตามสัดส่วนกับมุมเอียงของมัน ดังที่แสดงในวิดีโอ โมดูลนี้ยังรวมถึงออปแอมป์บนบอร์ด (LM393) และโพเทนชิโอมิเตอร์สองตัวที่สามารถใช้ตั้งค่าเกณฑ์สัญญาณเตือน ขับเอาต์พุตดิจิทัล D1 และ D2 (ในวิดีโอที่ 03:20)
คำแนะนำการเชื่อมต่อ
การเชื่อมต่อเซ็นเซอร์ SCA60C เป็นเรื่องง่าย โปรดดูแผนภาพด้านล่างสำหรับคำแนะนำด้วยภาพ
นี่คือขั้นตอนการเชื่อมต่อทีละขั้นตอน:
- แหล่งจ่ายไฟ: เชื่อมต่อพิน VCC บนเซ็นเซอร์เข้ากับพิน 5V บน Arduino ของคุณ เชื่อมต่อพิน GND เข้ากับ GND ของ Arduino
- สัญญาณ: เชื่อมต่อพิน Vout (พินกลาง) เข้ากับพินอินพุตแอนะล็อก A0 ของ Arduino นี่คือพินหลักที่ใช้สำหรับอ่านมุม (ในวิดีโอที่ 05:25)
- เอาต์พุตสัญญาณเตือน (ไม่บังคับ): โมดูลมีเอาต์พุตดิจิทัลเพิ่มเติมสองตัวคือ D1 และ D2 หากคุณต้องการใช้คุณสมบัติสัญญาณเตือน ให้เชื่อมต่อสิ่งเหล่านี้เข้ากับพิน A1 และ A2 ของ Arduino ตามลำดับ (ในวิดีโอที่ 05:30)
หากคุณไม่ต้องการคุณสมบัติสัญญาณเตือน คุณสามารถปล่อยพิน D1 และ D2 ไม่เชื่อมต่อได้ ซึ่งจะทำให้พินแอนะล็อก A1 และ A2 ว่างสำหรับเซ็นเซอร์อื่นๆ (ในวิดีโอที่ 12:00)
คำอธิบายโค้ด
โค้ดที่ให้มาถูกออกแบบมาเพื่ออ่านแรงดันไฟฟ้าแอนะล็อกจากเซ็นเซอร์และแปลงเป็นมุมเป็นองศา ส่วนที่สำคัญที่สุดของโค้ดที่คุณควรแก้ไขคือตัวแปรการกำหนดค่าที่ด้านบนของสเก็ตช์
const int anglePin =A0;
int angle =0;
const int angleCompensate =0;
const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch
const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;
นี่คือรายละเอียดของตัวแปรที่กำหนดค่าได้แต่ละตัว:
anglePin: ตัวแปรนี้กำหนดพินแอนะล็อกบน Arduino ที่เชื่อมต่อกับพินVoutของเซ็นเซอร์ คุณสามารถเปลี่ยนได้หากจำเป็นต้องใช้พินแอนะล็อกอื่นangleCompensate: นี่คือตัวแปรสำคัญสำหรับการปรับเทียบ เซ็นเซอร์ส่งออก 0 องศาเมื่อวางราบสนิท หากการใช้งานของคุณต้องการให้เซ็นเซอร์ติดตั้งในมุมเอียง คุณสามารถเพิ่มค่าชดเชยองศาที่นี่ได้ ตัวอย่างเช่น การตั้งค่านี้เป็น20จะทำให้เซ็นเซอร์อ่านค่า 0 องศาเมื่อเอียงทางกายภาพที่ 20 องศา (ในวิดีโอที่ 06:24)d1Pinและd2Pin: ตัวแปรเหล่านี้กำหนดพินแอนะล็อกที่ใช้ในการอ่านสถานะของเอาต์พุตสัญญาณเตือนของเซ็นเซอร์ หากคุณไม่ได้ใช้คุณสมบัติสัญญาณเตือน คุณสามารถละเว้นสิ่งเหล่านี้ได้d1Delayและd2Delay: ตัวแปรเหล่านี้แนะนำความล่าช้าเป็นมิลลิวินาทีหลังจากสัญญาณเตือนถูกกระตุ้น ซึ่งมีประโยชน์สำหรับการดีบาวซ์หรือเพื่อให้แน่ใจว่าเงื่อนไขสัญญาณเตือนคงอยู่เป็นระยะเวลาขั้นต่ำ (ในวิดีโอที่ 06:48)
คุณยังสามารถแก้ไขอาร์เรย์ lables[] เพื่อเปลี่ยนข้อความที่พิมพ์บน Serial Monitor ได้ ตัวอย่างเช่น คุณสามารถเปลี่ยน "Angle" เป็น "Robot Arm Position" เพื่อให้เหมาะกับโปรเจกต์ของคุณมากขึ้น (ในวิดีโอที่ 07:08)
การสาธิตโปรเจกต์สด
ในวิดีโอ เซนเซอร์ถูกสาธิตโดยการเคลื่อนย้ายผ่านช่วงการเคลื่อนที่ของมัน ขณะที่ Serial Monitor แสดงมุมที่สอดคล้องกัน ผู้นำเสนอแสดงให้เห็นว่าเซนเซอร์อ่านค่าได้ศูนย์องศาเมื่อวางราบ และสามารถวัดได้ถึง 90 องศาในทิศทางหนึ่ง และ -90 องศาในอีกทิศทางหนึ่ง (ในวิดีโอที่ 08:05)
การสาธิตยังเน้นฟีเจอร์สัญญาณเตือนด้วย โดยการปรับโพเทนชิโอมิเตอร์บนบอร์ด เอาต์พุต D1 และ D2 สามารถตั้งค่าให้ทำงานเมื่อเซนเซอร์เอียงออกจากตำแหน่งศูนย์องศา โค้ดจะอ่านเอาต์พุตดิจิทัลเหล่านี้และแสดงสถานะ (HIGH หรือ LOW) บน Serial Monitor ซึ่งสามารถใช้เพื่อกระตุ้นการทำงานอื่น ๆ ในโปรเจกต์ของคุณได้ (ในวิดีโอที่ 10:29)
บทต่างๆ
- [00:00] แนะนำเซนเซอร์วัดมุม SCA60C
- [00:52] การประยุกต์ใช้งานและกรณีการใช้งานสำหรับการวัดมุม
- [02:19] ทำความเข้าใจโมดูล SCA60C และส่วนประกอบต่างๆ
- [04:56] คู่มือการเดินสายไฟสำหรับเซนเซอร์ SCA60C
- [06:09] คำอธิบายโค้ดและตัวแปรการตั้งค่า
- [08:05] การสาธิตสดของการวัดมุมและการปรับเทียบ
- [10:29] การสาธิตฟีเจอร์สัญญาณเตือน D1 และ D2
- [13:17] บทสรุป
/*
* Robojax Arduino Step By Step Course
* Tilt Angle Sensor SCA60C1 SCA60C N1000060
* It displays the angle from 0 to 180 degrees.
*
Please watch video instruction here https://youtu.be/hkhepVzWyWE
Download and resource page https://robojax.com/RJT874
Download and resource page https://robojax.com/RJT18
*
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20
* in Ajax, Ontario, Canada. www.robojax.com
If you found this tutorial helpful, please support me so I can continue creating
content like this.
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int anglePin =A0;
int angle =0;
const int angleCompensate =0;
const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch
const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;
char *lables[]={"Angle","Alarm D1","Alarm D2"};
void setup()
{
Serial.begin(9600); // setup serial
Serial.println("Robojax SCA60C Angle Sensor");
}
void loop(){
//Robojax Tilt Angle Sensor
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
getAngle();
d1Alarm();
d2Alarm();
// print out the value you read:
Serial.print(lables[0]);//
Serial.print(":");
Serial.print(angle);
Serial.println("\xC2\xB0");//degree symbol
// Serial.print("\t");
// Serial.print(lables[1]);
// Serial.print(":");
// Serial.print(d1State);
// Serial.print("\t");
// Serial.print(lables[2]);
// Serial.print(":");
// Serial.println(d2State);
// Serial.println("======");
delay(100);
//Robojax Tilt Angle Sensor
}
void getAngle()
{
angle =map(analogRead(A0), 96, 927, -90, 90) + angleCompensate;
}
/**************************************/
/*!
@brief Get the state of the D1 alarm. HIGH if triggered.
@param no parameter
@returns returns nothing
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d1Alarm()
{
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
//
float vo = analogRead(d1Pin) * (5.0 / 1023.0);
if(vo < 3.5)
{
d1State =HIGH;
delay(d1Delay);
}else{
d1State =LOW;
}
}//d1Alarm() end
/**************************************/
/*!
@brief Get the state of the D1 alarm. HIGH if triggered.
@param no parameter
@returns returns nothing
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d2Alarm()
{
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
//
float vo = analogRead(d2Pin) * (5.0 / 1023.0);
if(vo < 3.5)
{
d2State =HIGH;
delay(d2Delay);
}else{
d2State =LOW;
}
}//d1Alarm() end
สิ่งที่คุณอาจต้องการ
-
อเมซอนSCA60C tilt sensor on Amazonamzn.to
-
อีเบย์SCA60C tilt sensor on eBayebay.us
-
อาลีเอ็กซ์เพรสSCA60C tilt sensor on AliExpresss.click.aliexpress.com
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
แผ่นข้อมูล (pdf)
-
robojax_tilt_angle_sensor_SCA60C_datasheet
robojax_tilt_angle_sensor_SCA60C_datasheet.pdf0.18 MB