Mục lục:

Đồng hồ tốc độ ô tô RC làm việc: 4 bước (có hình ảnh)
Đồng hồ tốc độ ô tô RC làm việc: 4 bước (có hình ảnh)

Video: Đồng hồ tốc độ ô tô RC làm việc: 4 bước (có hình ảnh)

Video: Đồng hồ tốc độ ô tô RC làm việc: 4 bước (có hình ảnh)
Video: Xe máy xúc chạy 2024, Tháng mười một
Anonim
Đồng hồ tốc độ ô tô RC làm việc
Đồng hồ tốc độ ô tô RC làm việc

Đây là một dự án ngắn mà tôi đã tạo ra như một phần của bản dựng RC lớn hơn của Land Rover hạng nhẹ. Tôi quyết định rằng tôi đã tưởng tượng có một đồng hồ tốc độ hoạt động trong bảng điều khiển, nhưng tôi biết rằng một servo sẽ không cắt nó. Chỉ có một lựa chọn hợp lý: triển khai arduino!

Một chút kiến thức nền tảng để bắt đầu… Tôi không phải là người viết mã hay điện tử. Tôi vẫn nghĩ về điện về dòng chảy của nước và hơi khó hiểu bởi các điện trở. Điều đó nói lên rằng, nếu ngay cả tôi cũng có thể tạo ra tác phẩm này, thì bạn cũng sẽ có thể làm được như vậy!

DANH SÁCH CÁC BỘ PHẬN:

Vi điều khiển: Tôi đã sử dụng chip ATTiny85, có giá khoảng £ 1 mỗi chip.

Lập trình vi điều khiển: Để đưa mã vào chip, bạn cần một cách để lập trình nó. Với arduino thông thường, đây chỉ là một cáp USB, nhưng đối với chip ATTiny, bạn cần thêm thứ gì đó. Bạn có thể sử dụng một arduino khác để làm điều này hoặc, giống như tôi, bạn có thể sử dụng một lập trình viên Tiny AVR từ Sparkfun.

learn.sparkfun.com/tutorials/tiny-avr-prog…

Tôi muốn giới thiệu điều này, vì tôi đã thử lập trình chúng bằng nhiều phương pháp khác nhau và phương pháp này là dễ nhất. Hội đồng quản trị là một chút đắt tiền, nhưng một khoản đầu tư tốt nếu bạn thực hiện nhiều dự án ATTiny.

Ổ cắm chip 8 pin: Nếu bạn đặt chip vào ổ cắm thay vì hàn trực tiếp, bạn có thể mắc phải một số sai lầm trong quá trình lắp ráp. Nói từ kinh nghiệm - không ai muốn giải mã chip để lập trình lại chúng.

Tụ điện: Tụ điện tách 100nF (mã 104) được sử dụng. Tôi không hiểu rõ tại sao, nhưng tôi đọc rằng các tụ điện tách rất quan trọng trên internet, vì vậy nó phải là sự thật…

Điện trở: Một điện trở 10kΩ được sử dụng để kéo đường dây vào arduino. Một lần nữa, một bí ẩn khác của điện tử.

Perfboard / Stripboard: Một số tấm nền để lắp ráp mạch của bạn.

Dây quấn: Dây có vỏ bọc thông thường quá dày để hàn vào động cơ. Sử dụng dây tráng men tốt sẽ làm giảm căng thẳng cho các đầu cuối của động cơ và làm cho cuộc sống của bạn dễ dàng hơn rất nhiều.

Dây Servo: Một dải băng ba dây kết thúc bằng phích cắm JR cái 3 chân. Tôi nhận được của tôi từ một servo bị cháy mà tôi đang 'sửa đổi'.

Động cơ bước: Tôi đã sử dụng động cơ bước Nidec lưỡng cực 6mm. Bất kỳ bước nhỏ nào cũng sẽ hoạt động, mặc dù hãy giữ chúng nhỏ, vì bước này đang được điều khiển trực tiếp từ Arduino.

Chân tiêu đề: Không cần thiết, nhưng nếu bạn đấu dây bước của mình vào 4 chân tiêu đề và đặt một ổ cắm trên mạch, bạn có thể dễ dàng rút phích cắm bảng điều khiển của mình để dễ lắp đặt.

Máy tính: Để lập trình bo mạch của bạn, bạn sẽ cần một máy tính. Có thể với Arduino IDE. Và có thể là cáp USB. Nếu nó có cả cáp nguồn thì tốt hơn nữa.

Bước 1: Hệ thống

Sơ lược cơ bản của hệ thống mà tôi đã tạo là một phương pháp theo đó tín hiệu Điều chế độ rộng xung (PWM) đến từ bộ thu RC được chuyển đổi thành quét động cơ bước thông qua vi điều khiển ATTiny 85 (uC).

Đây là một tài nguyên về tín hiệu PWM và RC, nhưng để tái tạo điều này, bạn không cần phải hiểu rõ về nó.

en.wikipedia.org/wiki/Servo_control

ATTiny là hương vị yêu thích của tôi về Arduino vì nó nhỏ với các chân cắm I / O vẫn đủ để thực hiện những việc cơ bản, vì vậy hoàn toàn phù hợp với các mô hình nhỏ và các dự án RC. Nhược điểm chính của ATTiny là nó đòi hỏi nhiều thiết lập hơn một chút để lập trình một cái, nhưng khi bạn đã thiết lập xong, chúng quá rẻ nên bạn có thể mua một đống chúng cho tất cả các loại dự án.

Kích thước của mặt đồng hồ tốc độ quá nhỏ để có động cơ giảm tốc có phản hồi, vì vậy để có phản hồi tương ứng, phải sử dụng động cơ bước. Động cơ bước là một động cơ được di chuyển với số lượng rời rạc (hoặc các bước…!), Điều này làm cho nó lý tưởng cho một hệ thống không phản hồi như thế này. Cảnh báo duy nhất là 'các bước' sẽ khiến chuyển động kết quả bị giật thay vì trơn tru. Nếu bạn nhận được một bước với đủ số bước trên mỗi vòng quay, điều đó không đáng chú ý, nhưng với bước mà tôi đã sử dụng trong dự án này chỉ có 20 bước hoặc hơn trong một vòng quay đầy đủ, thì bước nhảy góc khá tệ.

Hệ thống, khi bật nguồn, sẽ chạy ngược bước trong hai vòng quay, sao cho kim không. Đồng hồ tốc độ cần một chốt nghỉ ở nơi bạn muốn là vạch 0, nếu không, nó sẽ quay mãi mãi. Sau đó, nó ánh xạ các tín hiệu PWM thuận và nghịch tới một số bước nhất định của động cơ. Dễ dàng, phải không…?

Bước 2: Phần mềm

Tuyên bố từ chối trách nhiệm: Tôi không phải là một lập trình viên. Đối với dự án này, tôi là kỹ thuật số tương đương với Tiến sĩ Frankenstein, tập hợp một thứ gì đó hoạt động từ các bit mã khác nhau được tìm thấy.

Vì vậy, lời cảm ơn chân thành nhất của tôi gửi đến Duane B, người đã tạo ra mã để diễn giải tín hiệu RC:

rcarduino.blogspot.com/

Và đối với Ardunaut, người đã tạo ra mã để chạy một bước như một thước đo tương tự:

arduining.com/2012/04/22/arduino-driving-a…

Và cho cả hai, lời xin lỗi chân thành nhất của tôi cho những gì tôi đã làm với mã của bạn.

Bây giờ thì hết cách rồi, đây là những gì cần tải lên ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - sử dụng số ngắt trong tệp đính kèmInterrupt # xác định THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = SỐ PIN 2 - sử dụng số PIN trong digitalRead #define NEUTRAL_THROTTLE 1500 // đây là khoảng thời gian của van tiết lưu trung tính trên Ô tô RC điện #define UPPER_THROTTLE 2000 // đây là khoảng thời gian tính bằng micro giây của ga tối đa trên Ô tô RC điện #define LOWER_THROTTLE 1000 // đây là khoảng thời gian tính bằng micro giây của bướm ga nhỏ nhất trên Ô tô RC điện #define DEADZONE 50 // đây là vùng chết của bướm ga. Tổng số vùng chết là gấp đôi con số này. #include #define STEPS 21 // bước mỗi vòng quay (giới hạn ở 315 °) Thay đổi cài đặt này để điều chỉnh hành trình tối đa của đồng hồ tốc độ. #define COIL1 3 // Các chân cuộn. ATTiny sử dụng các chân 0, 1, 3, 4 cho bước. Chân 2 là chân duy nhất có thể xử lý ngắt nên nó cần là đầu vào. #define COIL2 4 // Thử thay đổi những điều này nếu động cơ bước không chạy đúng cách. #define COIL3 0 #define COIL4 1 // tạo một thể hiện của lớp bước: Bước bước (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Vị trí trong các bước (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // thời gian đặt lại khi ở ga không tải int Resetval = 0; dễ bay hơi int ThrottleIn = LOWER_THROTTLE; dễ bay hơi không dấu StartPeriod = 0; // thiết lập trong ngắt // chúng ta có thể sử dụng nThrottleIn = 0 trong vòng lặp thay vì một biến riêng biệt, nhưng sử dụng bNewThrottleSignal để chỉ ra rằng chúng ta có một tín hiệu mới // rõ ràng hơn cho ví dụ đầu tiên void setup () {// nói với Arduino chúng ta muốn hàm calcInput được gọi bất cứ khi nào INT0 (chân số 2) thay đổi từ HIGH thành LOW hoặc LOW thành HIGH // bắt những thay đổi này sẽ cho phép chúng ta tính toán khoảng thời gian xung đầu vào là attachmentInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // đặt tốc độ động cơ thành 30 RPM (khoảng 360 PPS). stepper.step (STEPS * 2); // Đặt lại vị trí (X bước ngược chiều kim đồng hồ). } void loop () {Resetval = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Giá trị đặt lại = 0; } // Ánh xạ ngược else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Giá trị đặt lại = 0; } // Ngoài phạm vi trên else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Giá trị đặt lại = 0; } // Ngoài phạm vi thấp hơn else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Tôi đang cố gắng yêu cầu bước tự thiết lập lại nếu tín hiệu RC ở trong vùng chết trong một thời gian dài. Không chắc liệu phần này có thực sự hoạt động hay không. }} int val = SPEED; // lấy giá trị chiết áp (dải 0-1023) val = map (val, 0, 255, 0, STEPS * 0,75); // ánh xạ phạm vi nồi trong phạm vi bước. if (abs (val - pos)> 2) {// nếu chu vi lớn hơn 2 bước. if ((val - pos)> 0) {stepper.step (-1); // di chuyển sang trái một bước. pos ++; } if ((val - pos) <0) {stepper.step (1); // di chuyển sang phải một bước. vị trí--; }} // delay (10); } void calcInput () {// nếu pin cao, nó bắt đầu ngắt if (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// lấy thời gian bằng micro - khi mã của chúng ta thực sự bận, điều này sẽ trở nên không chính xác, nhưng đối với ứng dụng hiện tại // của nó dễ hiểu và hoạt động rất tốt StartPeriod = micros (); } else {// nếu chân ở mức thấp, đó là cạnh giảm của xung, vì vậy bây giờ chúng ta có thể tính thời lượng xung bằng cách trừ đi // thời gian bắt đầu ulStartPeriod cho thời gian hiện tại được trả về bởi micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Tham khảo phần này để biết thêm thông tin về cách lập trình ATTiny85:

learn.sparkfun.com/tutorials/tiny-avr-prog…

Bước 3: Phần cứng

Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng

Tham khảo sơ đồ mạch để xây dựng mạch. Việc bạn lắp ráp nó như thế nào là tùy thuộc vào bạn, nhưng tôi khuyên bạn nên sử dụng một chút dải bảng mạch / bảng điều khiển được sử dụng để tạo mẫu bảng mạch và gắn chip vào ổ cắm.

C1 = 100nF

R1 = 10kΩ

Tụ điện nên được gắn càng gần chip càng tốt để đạt hiệu quả cao nhất.

Khi hàn các dây tráng men vào động cơ, hãy cực kỳ cẩn thận, vì các đầu cực trên động cơ thích ngắt và cắt đứt dây cuộn dây với động cơ. Để khắc phục điều này, một giải pháp tốt là hàn các dây dẫn lại, sau đó đặt một đốm lớn epoxy 2 phần lên trên mối nối, để nó đóng rắn, sau đó xoắn các dây lại với nhau. Điều này làm giảm căng thẳng trên các khớp đầu cuối riêng lẻ và ngăn chúng bị gãy. Nếu bạn không làm điều này, họ sẽ bắt đầu vào thời điểm ít thuận tiện nhất, được đảm bảo.

Nếu bạn tạo đầu nối chân cắm tiêu đề và thiết lập các chân như vậy: [Ca1, Cb1, Ca2, Cb2] với Ca1 đứng cho cuộn dây A, dây 1, v.v. Điều này cho phép bạn thay đổi hướng quay của máy đo bằng cách hoán đổi phích cắm xung quanh.

Máy đo sẽ cần một điểm cuối để hiệu chỉnh vị trí số 0. Tôi khuyên bạn nên làm kim bằng kim loại nếu có thể. Điều này ngăn nó uốn cong khi chạm vào endstop. Một cách để đưa kim vào vị trí tốt là dán kim tạm thời vào trục, bật nguồn mô-đun, để nó nghỉ, sau đó tháo và dán lại kim trên trục, đặt kim dựa vào endstop. Điều này căn chỉnh kim với sự ăn khớp từ tính của động cơ và đảm bảo rằng kim của bạn phải luôn nằm thẳng so với đầu cuối.

Bước 4: Phần kết

Hy vọng rằng bạn thích hướng dẫn ngắn gọn này và thấy nó hữu ích. Nếu bạn xây dựng một trong những cái này, hãy cho tôi biết!

Chúc may mắn!

Đề xuất: