Taula de continguts:

Velocímetre de cotxe RC de treball: 4 passos (amb imatges)
Velocímetre de cotxe RC de treball: 4 passos (amb imatges)

Vídeo: Velocímetre de cotxe RC de treball: 4 passos (amb imatges)

Vídeo: Velocímetre de cotxe RC de treball: 4 passos (amb imatges)
Vídeo: 3 РЕЦЕПТА из КУРИНОЙ ПЕЧЕНИ/ ПАШТЕТ!! ГОСТИ БУДУТ В ШОКЕ!! 2024, De novembre
Anonim
Velocímetre de cotxe RC de treball
Velocímetre de cotxe RC de treball

Aquest és un breu projecte que vaig crear com a part d’una versió més gran de RC d’un Land Rover lleuger. Vaig decidir que m'agradava tenir un velocímetre de treball al tauler, però sabia que un servo no el tallaria. Només hi havia una opció raonable: desplegar l’arduino.

Una mica d’antecedents per començar … No sóc una persona en codificació ni electrònica. Encara penso en l'electricitat pel que fa al flux d'aigua i estic una mica desconcertat per les resistències. Dit això, si fins i tot jo he estat capaç de fer que això funcioni, també hauríeu de ser capaços de fer-ho.

LLISTA DE PECES:

Microcontrolador: he utilitzat un xip ATTiny85, que costava aproximadament 1 GBP cadascun.

Programador de microcontroladors: per obtenir el codi al xip, necessiteu una manera de programar-lo. Amb arduino normal, això només és un cable USB, però per al xip ATTiny necessiteu alguna cosa més. Podeu fer servir un altre arduino per fer-ho o, com jo, podeu utilitzar un programador Tiny AVR de Sparkfun.

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

Ho recomanaria, ja que he provat de programar-los amb diversos mètodes i aquest és el més fàcil. El tauler és una mica car, però és una bona inversió si feu molts projectes ATTiny.

Socket de xip de 8 pins: si col·loqueu el xip en un sòcol en lloc de soldar-lo directament, us podeu permetre alguns errors en el muntatge. Parlat per experiència: ningú vol dessoldar xips per reprogramar-los.

Condensador: s’utilitza un condensador de desacoblament de 100 nF (codi 104). No entenc ben bé per què, però he llegit que els condensadors de desacoblament són importants a Internet, així que ha de ser cert …

Resistència: s’utilitza una resistència de 10 kΩ per tirar cap avall la línia cap a l’arduino. De nou, un altre misteri de l’electrònica.

Perfboard / Stripboard: Un sòcol sobre el qual muntar el circuit.

Filferro d’enrotllament: el filferro revestit regular és massa gruixut per soldar-lo al motor. L’ús de filferro esmaltat reduirà la tensió dels terminals del motor i us facilitarà la vida.

Servo Wire: una cinta de tres fils que acaba en un endoll femella JR de 3 pins. Vaig obtenir el meu d'un servo cremat que estava "modificant".

Motor pas a pas: he utilitzat un motor pas a pas bipolar Nidec de 6 mm. Qualsevol esglaó petit hauria de funcionar, tot i que el mantingueu petit, ja que el pas es condueix directament des de l’Arduino.

Pins de capçalera: no és imprescindible, però si connecteu el pas a pas a 4 pins de capçalera i poseu una presa de corrent al circuit, podeu desconnectar fàcilment el tauler de control per facilitar la instal·lació.

Ordinador: per programar el tauler, necessitareu un ordinador. Possiblement amb l’IDE Arduino. I potser un cable USB. Si també té un cable d’alimentació, és millor.

Pas 1: el sistema

L’esquema bàsic del sistema que vaig crear era un mètode pel qual el senyal de modulació d’amplada de pols (PWM) que prové del receptor RC es converteix en un escombratge de motor pas a pas mitjançant un microcontrolador ATTiny 85 (uC).

Aquí hi ha un recurs sobre senyals PWM i RC, però per reproduir-ho no cal que ho entengueu estrictament.

ca.wikipedia.org/wiki/Servo_control

L’ATTiny és el meu sabor preferit d’Arduino perquè és petit i té prou E / S pins per fer coses bàsiques, de manera que s’adapta perfectament a models petits i projectes RC. El principal inconvenient de l’ATTiny és que requereix una mica més de configuració per programar-ne un, però un cop l’heu configurat, són tan barats que podeu comprar piles per a tot tipus de projectes.

La mida del dial del velocímetre és massa petita per tenir un motor reductor amb retroalimentació, de manera que per tenir una resposta proporcional s’havia d’utilitzar un motor pas a pas. Un motor pas a pas és un motor que es mou en quantitats discretes (o passos …!), Cosa que el fa ideal per a un sistema sense retroalimentació com aquest. L'única advertència és que els "passos" faran que el moviment resultant sigui sacsejat en lloc de suau. Si obteniu un pas a pas amb prou passos per rotació, això no es nota, però amb el pas a pas que he utilitzat en aquest projecte amb només 20 passos aproximadament en una rotació completa, el salt d’angle és bastant dolent.

El sistema, en engegar-lo, executarà el pas enrere durant dues revolucions, de manera que posarà a zero l'agulla. El velocímetre necessita un passador de repòs on vulgueu que hi hagi la marca zero, o bé només girarà per sempre. A continuació, mapea els senyals PWM cap endavant i cap enrere a un nombre determinat de passos del motor. Fàcil, oi …?

Pas 2: el programari

Exempció de responsabilitat: no sóc un programador. Per a aquest projecte, sóc l'equivalent digital del Dr. Frankenstein, reunint quelcom que funciona a partir de diversos bits de codi trobats.

Per tant, el meu més agraït cor va a Duane B, que va crear el codi per interpretar els senyals RC:

rcarduino.blogspot.com/

I a Ardunaut, que va crear el codi per executar un pas a pas com a indicador analògic:

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

I a tots dos, les més sinceres disculpes pel que he fet al vostre codi.

Ara ja no està possible, aquí teniu què podeu penjar a ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = PIN DIGITAL 2 - utilitzeu el número d’interrupció a adjuntar Interruptor # define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = PIN DIGITAL 2 - utilitzeu el número PIN a digital Llegiu #define NEUTRAL_THROTTLE 1500 // aquesta és la durada en micros d’accelerador neutre en un cotxe RC elèctric # definir UPPER_THROTTLE 2000 // aquesta és la durada en microsegons de l’accelerador màxim en un cotxe RC elèctric # definir LOWER_THROTTLE 1000 // és la durada en microsegons d’accelerador mínim en un cotxe RC elèctric # definir DEADZONE 50 // aquesta és la zona morta de l’accelerador. La zona morta total és el doble. #include #define STEPS 21 // passos per revolució (limitat a 315 °) Canvieu-lo per ajustar el recorregut màxim del velocímetre. #define COIL1 3 // Pins de bobina. L’ATTiny utilitza els pins 0, 1, 3, 4 per al pas a pas. El pin 2 és l'únic pin que pot gestionar les interrupcions, de manera que ha de ser l'entrada. #define COIL2 4 // Intenteu canviar-los si el motor pas a pas no funciona correctament. #define COIL3 0 #define COIL4 1 // crea una instància de la classe stepper: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Posició en passos (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // temps per restablir-lo mentre està al ralentí int Resetval = 0; volàtil int ThrottleIn = LOWER_THROTTLE; volàtil sense signar llarg StartPeriod = 0; // establert a la interrupció // podríem utilitzar nThrottleIn = 0 en bucle en lloc d'una variable separada, però utilitzant bNewThrottleSignal per indicar que tenim un senyal nou // és més clar per a aquest primer exemple de configuració de buit () {// digueu a Arduino volem que es cridi la funció calcInput cada vegada que INT0 (pin digital 2) canvia d’ALTA a BAIXA o BAIXA a ALTA // la captura d’aquests canvis ens permetrà calcular quant de temps dura el pols d’entrada attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // Estableix la velocitat del motor a 30 RPM (360 PPS aprox.). stepper.step (PASOS * 2); // Restableix la posició (X passes en sentit antihorari). } void loop () {Resetval = millis; per a (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Resetval = 0; } // Inverteix el mapatge else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Resetval = 0; } // Fora del rang superior else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Resetval = 0; } // Fora del rang més baix si (ThrottleInAvg Resetcounter) {stepper.step (4); // Intento dir al pas a pas que es restableixi si el senyal RC està a la zona morta durant molt de temps. No estic segur de si aquesta part del codi funciona realment. }} int val = VELOCITAT; // obtenir el valor del potenciòmetre (rang 0-1023) val = mapa (val, 0, 255, 0, PASOS * 0,75); // mapeja l'interval de pot a l'interval de pas a pas. if (abs (val - pos)> 2) {// si la diferència és superior a 2 passos. if ((val - pos)> 0) {stepper.step (-1); // moure un pas cap a l'esquerra. pos ++; } if ((val - pos) <0) {stepper.step (1); // moure un pas cap a la dreta. pos--; }} // retard (10); } void calcInput () {// si el pin és alt, comença una interrupció si (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// obtingueu el temps amb micros; quan el nostre codi estigui molt ocupat, això esdevindrà imprecís, però per a l'aplicació actual és // fàcil d'entendre i funciona molt bé StartPeriod = micros (); } else {// si el pin és baix, és la vora descendent del pols, de manera que ara podem calcular la durada del pols restant el // temps d'inici ulStartPeriod del temps actual retornat per micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Consulteu això per obtenir més informació sobre la programació d’un ATTiny85:

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

Pas 3: el maquinari

El maquinari
El maquinari
El maquinari
El maquinari
El maquinari
El maquinari

Consulteu l’esquema del circuit per construir el circuit. La vostra manera de muntar-la depèn de vosaltres, però us suggeriria que feu servir una mica de tauler de perfils / perfboard que s’utilitza per prototipar la placa de circuits i muntar el xip en una presa de corrent.

C1 = 100nF

R1 = 10kΩ

El condensador s’ha de muntar el més a prop possible del xip perquè sigui el més eficaç possible.

Quan soldeu els cables esmaltats al motor, tingueu molta cura, ja que als terminals dels motors els agrada trencar-los i tallar-los el fil de la bobina. Per solucionar-ho, una bona solució és soldar els cables i, a continuació, posar una gran tassa d’epoxi de dues parts sobre la junta, deixar-la curar i girar els cables junts. D’aquesta manera es redueix l’estrès de les articulacions terminals individuals i s’hauria d’aturar el trencament. Si no feu això, es retiraran en el moment mínim convenient, garantit.

Si feu el connector del pin de capçalera i configureu els pins de la manera següent: [Ca1, Cb1, Ca2, Cb2] amb Ca1 representant la bobina A, el cable 1, etc. Això us permet canviar la direcció de rotació del manòmetre canviant el tap al voltant.

L'indicador necessitarà un punt final per calibrar la posició zero contra. Si és possible, recomanaria fer l’agulla amb metall. Això impedeix que es flexioni quan arriba a la parada. Una manera d’aconseguir que l’agulla estigui en bona posició és enganxar temporalment l’agulla a l’eix, encendre el mòdul, deixar-lo reposar i, a continuació, treure i tornar a enganxar l’agulla de l’eix, amb l’agulla recolzada endstop. Això alinea l’agulla amb l’engranatge magnètic del motor i garanteix que l’agulla sempre ha de descansar contra el punt final.

Pas 4: Epíleg

Tant de bo us hagi agradat aquest breu instructiu i el trobeu útil. Si en creeu un, feu-m'ho saber.

Bona sort!

Recomanat: