Zelfbouw modelbouw motorregelaar

Gepost door Jeroen Vreuls op donderdag 24 augustus 2023

Regelaar met stroommeetfunctie

Er verandert aan de hardware niet veel, het enige wat er moet gebeuren is een extra draad aansluiten tussen de regelaar en controller.

Schema met stroommetingSchema met stroommeting

Ik heb de lijn even rood gemaakt, dat is de enige draad die er bij komt. De draad komt op een analoge ingang van de controller te zitten, in dit geval gebruik ik hier poort E0 voor.

De software is iets meer, maar valt ook mee. Ik ga alleen laten zien wat er aan software bijkomt, dus niet het hele programma.

Dit gaan we toevoegen. Boven in het programma komt dit erbij zodat we de analoge waarde in kunnen lezen. En daar onder de stroom waarde en de variabele van de stroom.

Declare Adin_Res = 8                       ; resolutie 8 bits
Declare Adin_Tad = frc                     ; set RC osc
Declare Adin_Stime = 50                    ; sample tijd 5
                              
Symbol MAX_CURRENT = 26                    ; Stroom instelling
Dim CURRENT As Word                        ; Variabele stroom

We lezen de analoge poort met 8 bit in, van 0 tot 255. De controller werkt op 5 V DC, dus de stappen zijn 5 : 255 = 0,01960 V DC per stapje. De meetweerstand op de regelaar is 0,1 Ohm (zie schema). Ik heb de maximale stroom door de motor even op 5 A gehouden. Dan krijgen we dus een spanningsval over de weerstand van 5 A X 0.1 = 0,5 V DC : 0.01960 = 26, dat is dus de waarde die we invullen bij MAX_CURRENT. Dit is puur theoretisch, we hebben ook nog te maken met de afwijking van de weerstand, de sporen op de print en de bedrading. Het zou dus zomaar kunnen zijn dat de motor eerder of later in overstroom gaat. We gaan kijken wat er verder nog nodig is.

Onder de START lus verandert er niets, dat blijft allemaal zoals het is. Waar we wel iets aan toevoegen is bij RECHTS_OM en bij LINKS_OM, daar voegen we dit toe:

CURRENT = ADIn 5 
    
If CURRENT > MAX_CURRENT Then
  GoSub OVERSTROOM
EndIf

Hier wordt de waarde CURRENT die binnenkomt op de analoge ingang vergeleken met de MAX_CURRENT (in dit geval 26) en als die waarde overschreden wordt dan springt het programma naar de OVERSTROOM lus. Deze lus komt onder FAILSAFE.

OVERSTROOM:


  VAR1 = PulsIn PORTA.5 , 1                 
  WAARDE = (VAR1-243)*1.20
    
  VRIJGAVE = 0   

  HPWM 1,0,0                              
  HPWM 2,0,0

  FUNCTIE_LED = 1                      
  DelayMS 50                         
  FUNCTIE_LED = 0                       
  DelayMS 50
  FUNCTIE_LED = 1                      
  DelayMS 50                         
  FUNCTIE_LED = 0                       
  DelayMS 500


  If WAARDE > 120 Then
    If WAARDE < 138 Then   
      Cls
      Return
    EndIf
  EndIf
      
GoTo OVERSTROOM

End

Bij OVERSTROOM worden de beide HPWM signalen en het vrijgave signaal uit gezet, ook wordt er naar de signaal waarde van de zender gekeken. Als het signaal tussen de 120 en 138 zit (stuurknuppel in de middenstand) dan wordt er uit de OVERSTROOM lus gesprongen naar waar de overstroom gedetecteerd is. Dat kan naar RECHTS_OM of naar LINKS_OM zijn, als in één van de twee lussen de middenstand van de knuppel gedetecteerd wordt, spring het programma naar de START lus. Op deze manier wordt dus de stroom door de motor gemeten. De waarde die bij MAX_CURRENT ingevuld wordt is dus afhankelijk van de grootte van de aangesloten motor. Als de motor bijvoorbeeld bij 6 A uit moet schakelen wordt de waarde 6 X 0.1 = 0.6 : 0.01960 = 31.

Als het programma in de overstroom lus zit, knippert de functie LED twee maal snel en wacht dan even om daarna weer twee maal snel te knipperen. Zo kun je dus zien dat de motor teveel stroom getrokken heeft.

Ik heb nog even een meting gedaan om te kijken of de ingegeven stroom waarde een beetje klopt.

StroommetingStroommeting

Links onderin zie je wat de motor vrij draaiend opneemt, dit is zowel links als rechtsom. Naarmate je de knuppel sneller heen en weer haalt loopt de stroom iets op naar ± 2 A. De hoge waarde die je ziet is de stall current, die loopt op naar zo'n 4 A voor dat de motor uitschakelt. Als de motor normaal onder belasting draait schakelt deze uit rond de 4,5 A. Dat is dus iets lager dan wat we berekend hebben en dat komt door de vrij lange bedrading aan de regelaar en waarschijnlijk de print sporen. Dus de MAX_CURRENT zou iets hoger kunnen, maar de motor levert een behoorlijk koppel, hij is niet met de hand tegen te houden.

Dit is trouwens de gebruikte motor voor de test:

Gebruikte motor voor de stroommetingGebruikte motor voor de stroommeting

Heb het ding ooit uit een elektrische step gehaald.