สารบัญ:
- ขั้นตอนที่ 1: สร้างวงจรอิเล็กทรอนิกส์
- ขั้นตอนที่ 2: ตั้งค่าพิน Planner
- ขั้นตอนที่ 3: รหัส Verilog
- ขั้นตอนที่ 4: อัปโหลดรหัส Verilog
วีดีโอ: FPGA Cyclone IV DueProLogic ควบคุมเซอร์โวมอเตอร์: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ในบทช่วยสอนนี้ เราจะเขียนโค้ด Verilog เพื่อควบคุมเซอร์โวมอเตอร์ เซอร์โว SG-90 ผลิตโดย Waveshare เมื่อคุณซื้อเซอร์โวมอเตอร์ คุณอาจได้รับแผ่นข้อมูลที่แสดงรายการแรงดันไฟฟ้าในการทำงาน แรงบิดสูงสุด และการปรับความกว้างพัลส์ (PWM) ที่เสนอ…เป็นต้น อย่างไรก็ตาม FPGA DuePrologic ให้แรงดันไฟฟ้าขาเข้า 3.3V โดยที่แรงดันไฟฟ้าในการทำงานของเซอร์โว SG-90 คือ 5V - 7V หากไม่มีพลังงานไฟฟ้า ฉันจะแสดงรายการ PWM ที่ปรับเทียบแล้วเพื่อหมุนเซอร์โวมอเตอร์ได้สำเร็จ
งานของเรา: เซอร์โวมอเตอร์หมุนไปมาในระยะเวลา 5 วินาที
เมนูเต็ม:
ขั้นตอนที่ 1: สร้างวงจรอิเล็กทรอนิกส์
ขั้นตอนที่ 2: ตั้งค่าพิน Planner
คลิก "เริ่มการวิเคราะห์การกำหนด I/O" เพื่อตรวจสอบว่าตัววางแผนพินได้รับการตั้งค่าอย่างถูกต้องหรือไม่ มิฉะนั้น คุณต้องนำเข้าชื่อพอร์ตทั้งหมดด้วยตัวเอง
ขั้นตอนที่ 3: รหัส Verilog
เราสร้างตัวจับเวลา "servo_count" เมื่อ "servo_A" สูง PWM จะเป็น 1.5ms ดังนั้นเซอร์โวจะอยู่ที่ 120 องศา ในทางตรงกันข้าม เมื่อ "servo_A" มีค่าต่ำ PWM จะเป็น 0.15ms ดังนั้นเซอร์โวจะอยู่ที่ 0 องศา
กำหนด XIO_2[3] = servo_pulse; //สำหรับวี
reg [31:0] servo_count;
เริ่มแรก
servo_count <= 32'b0;
servo_A <= 1'b0;
จบ
เสมอ @(โพสท่า CLK_66)
เริ่ม
servo_count <= servo_count + 1'b1;
if(servo_count > 400000000) //รอบนาฬิกา 66MHz, 1/66M * 400000000 ~ 5 วินาที
เริ่ม
servo_A <= !servo_A;
servo_count <= 32'b0;
จบ
จบ
reg [31:0] ex_auto;
เริ่มแรก
ex_auto <= 32'b0;
servo_auto <= 1'b0;
จบ
เสมอ @(โพสท่า CLK_66)
เริ่ม
ถ้า(servo_A==1'b1)
เริ่ม
ex_auto <= ex_auto + 1'b1;
if(ex_auto > 100000) //รอบนาฬิกา 66MHz, PWM นี้คือ ~1.5ms, เซอร์โวหมุนไปที่ 120 องศา
เริ่ม
servo_auto <= !servo_auto;
ex_auto <= 32'b0;
จบ
จบ
ถ้า(servo_A==1'b0)
เริ่ม
ex_auto <= ex_auto + 1'b1;
if(ex_auto > 10000) //รอบนาฬิกา 66MHz, PWM นี้คือ ~0.15ms, เซอร์โวหมุนไปที่ 0 องศา
เริ่ม
servo_auto <= !servo_auto;
ex_auto <= 32'b0;
จบ
จบ
จบ
ขั้นตอนที่ 4: อัปโหลดรหัส Verilog
คลิก "เริ่มการรวบรวม" หากไม่มีข้อความแสดงข้อผิดพลาดปรากฏขึ้น ให้ไปที่ "โปรแกรมเมอร์" เพื่อตั้งค่าฮาร์ดแวร์ให้เสร็จสิ้น อย่าลืมอัปเดตไฟล์ pof ใน "เปลี่ยนไฟล์" หากจำเป็น คลิก "เริ่ม" เพื่ออัปโหลดรหัส
ท้ายที่สุด คุณควรเห็นว่าเซอร์โวมอเตอร์ถูกหมุนเป็นระยะๆ
แนะนำ:
FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: 5 ขั้นตอน
FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: แม้ว่า FPGA DueProLogic จะได้รับการออกแบบอย่างเป็นทางการสำหรับ Arduino แต่เราจะทำให้ FPGA และ Raspberry Pi 4B สื่อสารกันได้ มีการใช้งานสามงานในบทช่วยสอนนี้: (A) กดปุ่มสองปุ่มบนพร้อมกัน FPGA เพื่อพลิกมุมของ
FPGA Cyclone IV DueProLogic - ปุ่มกดและไฟ LED: 5 ขั้นตอน
FPGA Cyclone IV DueProLogic - ปุ่มกดและไฟ LED: ในบทช่วยสอนนี้ เราจะใช้ FPGA เพื่อควบคุมวงจร LED ภายนอก เราจะใช้งานต่อไปนี้ (A) ใช้ปุ่มกดบน FPGA Cyclone IV DuePrologic เพื่อควบคุม LED (B) Flash LED บน & ปิดเป็นระยะVideo demo Lab
เกม Arduino Cyclone: 5 ขั้นตอน (พร้อมรูปภาพ)
เกม Arduino Cyclone: ฉันไม่เคยเล่นเกมอาเขตไซโคลนจริง ๆ แต่ฉันชอบแนวคิดที่จะเล่นกับเวลาตอบสนองของเรา ฉันออกแบบเกมย่อขนาด ประกอบด้วยไฟ LED 32 ดวงที่สร้างเป็นวงกลม ไฟ LED จะสว่างขึ้นทีละดวงในฐานะผู้ไล่ล่านำ เป้าหมายคือการกดปุ่ม
Cyclone (เกม Arduino LED): 6 ขั้นตอน (พร้อมรูปภาพ)
Cyclone (เกม Arduino LED): ในบทช่วยสอนนี้ ฉันจะสอนวิธีสร้างเกม LED ที่มีโค้ดหรือประสบการณ์เพียงเล็กน้อย! ฉันมีความคิดนี้มาระยะหนึ่งแล้วและในที่สุดก็เริ่มสร้างมันขึ้นมา เป็นเกมสนุก ๆ ที่ทำให้เรานึกถึงเกมอาร์เคดทั้งหมด มีแบบฝึกหัดอื่นเ
เกมอาร์เคด Arduino Cyclone: 6 ขั้นตอน
เกม Arduino Cyclone Arcade: ไฟกะพริบตา! อาร์ดูโน! เกม! ยังต้องพูดอะไรอีก? เกมนี้อิงจากเกมอาร์เคด Cyclone ซึ่งผู้เล่นพยายามหยุดการเลื่อนแบบมีไฟ LED รอบวงกลมที่จุดใดจุดหนึ่ง