Inhoudsopgave:

Arduino Resolver-module: 4 stappen
Arduino Resolver-module: 4 stappen

Video: Arduino Resolver-module: 4 stappen

Video: Arduino Resolver-module: 4 stappen
Video: Arduino IDE 2.0.4 Tutorial For beginners / compilation error solving 2024, November
Anonim
Arduino Resolver-module
Arduino Resolver-module

Tine9 is terug met een nieuwe module. Deze module wordt een Resolver-module genoemd.

In de wereld van motorbesturing zijn er verschillende soorten of methoden om positie te detecteren. Deze methoden omvatten hall-sensoren, XY-sensoren, resolver, RVDT, LVDT, veldregisseurs, potentiometer, enz. Afhankelijk van hoe elk van deze sensoren is ingesteld, kunt u zelfs uw absolute positie bepalen zonder zelfs maar de laatste positie in het geheugen op te slaan.

De module die ik gebruik kan worden gebruikt om een RVDT, LVDT en Resolver te demoduleren, maar voor het doel van vandaag zal het demoduleren van een resolver.

Technisch inzicht: expertniveau

Tutorial Plug en Play: gemiddeld niveau

Benodigdheden

1: Arduino Nano

2: Oplossermodule

3: Broodplank

4: 9,0 volt batterij of NScope

5: Oplosser

6: 10x Breadboard Jumper Wires

Stap 1: Oplossermodule

Oplossermodule
Oplossermodule

Er zijn een aantal dingen die je met een resolver kunt doen: je kunt een motor demoduleren voor motorcommutatie, je kunt een absolute positie krijgen als je niet voorbij het nulpunt gaat, en je kunt snelheid uit een motor halen.

Waar ik ze het meest heb gebruikt, is in ruimtevaarttoepassingen van rolroer, roer, raketvin of camerabesturing.

Ze zijn meestal wat duurder dan een pot- of halsensor, maar ze geven je een ongelooflijke resolutie.

Stap 2: Instellen

Opstelling
Opstelling
Opstelling
Opstelling
Opstelling
Opstelling
Opstelling
Opstelling

1: Eerst moet je je arduino nano op een broodplank plaatsen

2: Je moet de 5V-pin op de Arduino aansluiten op de +3V3-pin en de 5V-pin op de Resolver-module (de module kan een voeding van 3,3 V hebben terwijl hij een 5V-excitatie geeft op de resolver)

3: Verbind RTN op de Arduino met de RTN op Resolver Module

4: Verbind de D9 op de Arduino met de PWM op de Resolver Module

5: Verbind A0 op de Arduino met MCU_COS+ op de Resolver Module

6: Verbind A1 op de Arduino met MCU_SIN+ op de Resolver Module

7: Sluit de Resolver EX+ draad aan op EX+ op de Resolver Module

8: Sluit de Resolver EX-draad aan op EX- op de Resolver Module

9: Sluit de Resolver COS+-draad aan op COS+ op de Resolver-module

10: Sluit de 2 Resolver RCOM-draden aan op RCOM op de Resolver-module

11: Sluit de Resolver SIN+-draad aan op SIN+ op de Resolver-module

12: Sluit 9V-batterij aan op RTN (-) en VIN (+)

13: Of sluit Nscope +5V tot 5V aan op Arduino en RTN op Nscope op RTN op Arduino

14: Sluit Scope aan op USB op pc

15: Arduino aansluiten op USB op pc

Stap 3: Laad de code

Laad de code
Laad de code
Laad de code
Laad de code

Kopieer Plak de onderstaande Arduino-code in uw schets in de Arduino IDE

Wat deze code gaat doen, is naar PWM de Resolver-module gaan. Die module zal de resolver prikkelen en een squarish golf produceren op de secundaire spoelen van de resolver. De signalen die uit de Sin+ en Cos+ komen, worden vervolgens naar een OPAMP geleid die de golf centreert en de output vermindert zodat deze tussen 0-5 volt gaat.

Sin+ en Cos+ zijn zoals ze bedoelen. De Sin is 90 graden uit fase met de Cos-golf.

Omdat ze 90 graden uit fase zijn, moeten we de functie Atan2 (Cos, Sin) gebruiken om de juiste coördinaat van de resolverpositie te krijgen.

Dan spuugt de Arduino, nadat hij 4 samples heeft gekregen, een waarde uit tussen -3,14 en 3,14 die respectievelijk -180 graden en +180 graden vertegenwoordigen. Dit is de reden waarom als u de resolver voor absolute positie wilt gebruiken, u alleen tussen -180 en 180 moet gebruiken zonder overrotatie, anders rolt u om en denkt u dat u weer aan het begin of einde van uw actuatorslag bent. Dit zou een probleem zijn als u besluit een resolver te gebruiken voor de x- of y-as van een 3D-printer en omrolt waardoor de 3D-printer in de war raakt.

Ik had de code iets beter kunnen maken met interrupts om meer continue PWMing te hebben, maar dit is voldoende voor deze toepassing.int A = A0;

intB = A1; int pwm = 9; int c1 = 0; int c2 = 0; int c3 = 0; int c4 = 0; int c5 = 0; int c6 = 0; int s1 = 0; int s2 = 0; int s3 = 0; int s4 = 0; int s5 = 0; int s6 = 0; vlotteruitgang = 0,00; int sin1 = 0; int cos1 = 0; int positie_status = 1; int get_position = 0; void setup () { // plaats hier uw setup-code om één keer uit te voeren: pinMode (pwm, OUTPUT); Serieel.begin(115200); }

lege lus() {

if(get_position=5){ cos1 = (c1+c2)-(c3+c4); sin1 = (s1+s2)-(s3+s4); uitgang = atan2(cos1, sin1); c1 = 0; c2 = 0; c3 = 0; c4 = 0; s1 = 0; s2 = 0; s3 = 0; s4 = 0; Serial.print("Positie: "); Serial.println(uitvoer); get_positie = 1; }

// plaats hier je hoofdcode om herhaaldelijk uit te voeren:

}

Stap 4: Stap 3: Veel plezier

Stap 3: Veel plezier
Stap 3: Veel plezier
Stap 3: Veel plezier
Stap 3: Veel plezier

Veel plezier met het roteren van de resolver en leer hoe de resolver werkt en welke applicaties je zou kunnen gebruiken met deze resolvermodule.

Aanbevolen: