verstelbare poten


Op 19 februari 2020 21:27:20 schreef bprosman:
Dat klopt, PWM'en gaat niet lukken met een relais. Vraag is of dat nodig is. Weet je hoe lang het duurt alvorens zo'n meubel 1cm omhoog komt als er spanning op komt ?

dit duurt enkele seconden,

er staat 1 meubel met een bijgeleverd besturings systeem. ik kan hier morgen naar kijken.

Lambiek

Special Member

@TS,
Lees dit eens door als je tijd en zin hebt.

https://www.circuitsonline.net/artikelen/view/48

Daar staat wat over encoders in.

Als je haar maar goed zit, GROETEN LAMBIEK.

hierbij moet rekening gehouden worden met dat een kant van het meubel zwaarder kan zijn als de andere kant.

een 8-kanaals 5V relais module om de Ampere's te verhogen. (maar aan de hand van jullie reacties zal dit niet werken omdat een relais dit niet aankan)

OF het wel of niet lukt met relais hangt af van de snelheid van de beweging. Langzaam bewegingen kunnen ook nog wel met relais geregeld worden.

Ook een Relais kan je met een PWM signaal aansturen. Echter gaat dit zo langzaam dat het eigenlijk geen PWM meer is maar meer een soort variabele tijd sturing. Dit komt een transistor schakelt in µS of soms sneller een relais zit je eerder aan millie seconden te denken. En probeer het relais dan ook niet sneller te schakelen dan bv 10mS.

IK denk dat het wel een goed idee is om het gewoon met een relais module te gaan proberen. IK ga wel wat verklappen en dat is dat je aan 8 relais niet genoeg hebt. Ik hoor graag van jouw waarom.

2de punt is dat ik deze relais modules ken en die eigenlijk niet geschikt zijn voor jouw motor en dat komt omdat de 10A die erop staat enkel voor zuivere weerstand belasting is en dat zijn dan bijna altijd verwarmings-elementen. Een motor heeft een nadelig effect op schakelcontacten en deze schakelstroom word altijd apart vermeld in de datasheet. De schakelstroom voor motoren is altijd een stuk lager dan dat voor zuivere weerstand. Het relais zal wel werken op deze motor maar het relais zal niet zo heel oud worden dit kan soms een paar maanden zijn tot jaren.
Maar laat dat je plezier niet bederven en ga gewoon met dit relais module aan de slag.

Op 19 februari 2020 22:16:31 schreef Lambiek:
@TS,
Lees dit eens door als je tijd en zin hebt.

https://www.circuitsonline.net/artikelen/view/48

Daar staat wat over encoders in.

kijk dat is duidelijke taal! wat ik ook begrijp :)

dus om de motor aan te sturen heb ik een arduino nodig.
en 6 x een versterker ( dit is een optie volgens mij? https://www.pololu.com/product/2991 of hebben we het dan over zoiets https://www.kiwi-electronics.nl/8-kanaals-relais-module?gcli...YcEALw_wcB )

maar als ik 6 x een versterker/motor driver gebruik kan ik dit dan nogwel aansturen met 1 arduino UNO rev3 bijvoorbeeld? kan ik al deze 6 versterkers misschien aansturen met 1 signaal?

Lambiek

Special Member

Even tellen hoeveel I/O je denkt nodig te hebben en daar je controller op kiezen. De regelaar uit je eerste link zou al goed zijn.

Als je haar maar goed zit, GROETEN LAMBIEK.
High met Henk

Special Member

Mijn werkgever verhuurt dit:

6 poten: check
12 Vdc zit er ook vast wel op: radio ofzo check
Een tafel optillen zal ook wel lukken: check

Gewoon ff inhuren voor je presentatie en klaar.

Overigens wellicht krijg je korting: deze ligt nu idle..

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???
Lambiek

Special Member

Dat teld niet, die is hydraulisch. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 20 februari 2020 20:37:30 schreef Lambiek:
Even tellen hoeveel I/O je denkt nodig te hebben en daar je controller op kiezen. De regelaar uit je eerste link zou al goed zijn.

dus heb 6 x een driver nodig, de juiste arduino en de motoren?
thats al?

de driver zorgt dus ook voor de versterking?

Lambiek

Special Member

Op 21 februari 2020 09:22:25 schreef Gkanis:
dus heb 6 x een driver nodig, de juiste arduino en de motoren?
thats al?

Ja, wat had je nog meer gewild dan. :) En vergeet je encoder signalen niet hé.

de driver zorgt dus ook voor de versterking?

Ja. Bij een servo wordt er vaak van een versterker gesproken en in jou geval is dat gewoon je motorregelaar. En in principe wordt je signaal ook versterkt, je stuurd de driver met een klein signaaltje aan "met je Arduino of andere controller" en je driver stuurt een motor aan die bijv. 10A of meer trekt.

Hier heb je nog wat info, lees dit weer eens door.

https://www.circuitsonline.net/artikelen/view/54

Deze is te ligt voor jou doel, maar misschien wordt het dan iets duidelijker voor je.

EDIT:
Jammer dat je niet zoiets kunt/mag gebruiken, dit is super makkelijk aansturen. Dit is een lineaire servo, heb je maar zes I/O pinnen voor nodig en twee voor je drukknoppen. En als je het via een potmeter doet kun je elke positie innemen die je maar wil, gewoon traploos dus.

https://www.youtube.com/watch?v=L5tx64G1ilQ

https://oscarromero-arduino.weebly.com/les-6-servomotor.html

Als je haar maar goed zit, GROETEN LAMBIEK.

Jammer dat je niet zoiets kunt/mag gebruiken, dit is super makkelijk aansturen. Dit is een lineaire servo, heb je maar zes I/O pinnen voor nodig en twee voor je drukknoppen. En als je het via een potmeter doet kun je elke positie innemen die je maar wil, gewoon traploos dus.

inderdaad maar het gaat er juist om dat de motor er niet naast kan aangezien het in een koker word ingebouwd. en iedere poot een gewicht van 200 kilo moet kunnen dragen.

kan ik dit dan nog wel aansturen met 1 arduino UNO rev3 bijvoorbeeld?

Goed opgemerkt. Dat kan je nu vrij eenvoudig uitzoeken hoeveel IO-lijnen je arduino minimaal moet hebben

IK gok dat er poot een 6 of 8 pins connector op zit. 2 voor de motor dat is makkelijk. 4 pinnen voor de encoder want die heeft zo eigen spanning nodig. En mogelijk zitter er ook nog 2 eindcontacten in.

Dat word dan per poot 2 of 4 draden die direct naar je arduino gaan

Mag jij even voor die pololu driver even opzoeken hoeveel er voor 1 driver naar de arduino moeten.

Als die aansluitingen plus je drukknoppen en nog eventueel een uitgangen voor 1 of meerdere leds moet je dan even bij elkaar optellen.

IK gok dat er poot een 6 of 8 pins connector op zit. 2 voor de motor dat is makkelijk. 4 pinnen voor de encoder want die heeft zo eigen spanning nodig. En mogelijk zitter er ook nog 2 eindcontacten in.

klopt de poten zijn voorzien van een 6 pins connector

Lambiek

Special Member

Probeer nu eerst eens één poot aan de gang te krijgen, lees een encoder in en kijk wat het doet met bijv. een teller die je aanmaakt in je programma. Daar kan ik je niet bij helpen, want ik gebruik geen arduino's. Zelf werk ik met andere controllers.

Als je haar maar goed zit, GROETEN LAMBIEK.

Maar dan nog. Eerst 1 poot, dan begin je te snappen dat je een aantal signalen naar de motor-driver INSTELLINGEN zijn die niet veranderen. Als je zoiets al 100x gedaan hebt dan kan je aan het begin tellen hoeveel IO je nodig hebt, maar als het je eerste projectje is, dan weet je dat nog niet. Klein beginnen, opdelen in behapbare deel-projectjes.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 24 februari 2020 09:51:52 schreef rew:
Maar dan nog. Eerst 1 poot, dan begin je te snappen dat je een aantal signalen naar de motor-driver.......

Natuurlijk, maar je moet ergens beginnen. Gewoon een beetje spelen met één poot, kijk wat een encoder doet "van mij part met een display erbij" dan zie je wat er gebeurt en hoe je programma daar op reageert.

En als de TS nog geen ervaring heeft met Controllers, ja dan kon het nog wel eens een moeilijk project worden.

EDIT:
Ik heb wel een voorbeeld hoe je een encoder uit kunt lezen, maar dat is in picbasic. Maar dat kun je omzetten naar het Arduino gebrabbel. En met een display erbij kun je precies zien wat er gebeurt, heb het hier getest met een encoder 500 pulsen/omwenteling. Het telt prima op en af zonder een puls te missen.

pic basic code:


Device 16F887                               ; Processor type

Xtal 10                                     ; Cristal 10Mhz

On_Interrupt ROTARY_ENCODER                 ; Interrupt routine timer 0

Asm                                         ; Config settings
CONFIG_REQ            
__CONFIG _CONFIG1, HS_OSC & WDT_OFF & DEBUG_OFF & FCMEN_OFF & LVP_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON 
__CONFIG _CONFIG2, WRT_OFF & BOR40V 
EndAsm
   
All_Digital true                            ; Alle poorten digitaal

Declare Adin_Res = 8                        ; resolutie 8 bits
Declare Adin_Tad = frc                      ; set RC osc
Declare Adin_Stime = 50                     ; sample tijd 5

Declare LCD_RSPin PORTD.2                   ; Reset display poort D.2
Declare LCD_ENPin PORTD.3                   ; Enable display poort D.3
Declare LCD_DTPin PORTD.4                   ; Data display poort D.4 t/m D.7

Declare Rsin_Pin  PORTB.2 ;                 ; Data in   ; LET OP
Declare Rsout_Pin PORTB.3 ;                 ; Data uit  ; LET OP

Declare Serial_Baud 9600                    ; Baudrate 9600

Declare CCP1_Pin PORTC.2                    ; HPWM 1 op poort C.2
Declare CCP2_Pin PORTC.1                    ; HPWM 2 op poort C.1

Symbol INTF = INTCON.1                      ; RB0 Extern interrupt vlag      
Symbol INTE = INTCON.4                      ; RB0 Extern interrupt enabel   
Symbol GIE  = INTCON.7                      ; Global Interrupt enabel

Symbol PULS_A = PORTB.0                     ; Encoder puls a
Symbol PULS_B = PORTB.1                     ; Encoder puls b

Symbol LED = PORTA.1                        ; Controle led puls

Dim TELLER As Word                          ; Variabele teller

Cls                                         ; Wis display

DelayMS 500                                 ; Pauze 0.5 sec 

Clear                                       ; Wis geheugen

         ;543210                            ; Hulpregel poort A
PORTA  = %000000                            ; Maak poort A laag
TRISA  = %111101                            ; Poort_A I/O

         ;543210                            ; Hulpregel poort B
PORTB  = %000000                            ; Maak poort B laag
TRISB  = %000011                            ; Poort_B I/O

         ;76543210                          ; Hulpregel poort C
PORTC  = %00000000                          ; Maak poort C laag
TRISC  = %00000000                          ; Poort_C I/O

         ;76543210                          ; Hulpregel poort D
PORTD  = %00000000                          ; Maak poort D laag
TRISD  = %00000000                          ; Poort_D I/O

         ;210                               ; Hulpregel poort E 
PORTE  = %000                               ; Maak poort E laag
TRISE  = %111                               ; Poort_E I/O

         ;76543210                          ; Hulpregel analoog
ADCON0 = %00000001                          ; ADCON0 register analoog

         ;543210                            ; Hulpregel analoog poort_B
;ANSELH = %000000                            ; ANSEL register analoog poort_B

;-----------------------------------------
; VOORBEELD - INLEZEN - OPTISCHE ENCODER.
;-----------------------------------------

TELLER = 1

GoTo OVER_IRQ

ROTARY_ENCODER:


Context Save
    If PULS_A = 1 Then
       If PULS_B = 1 Then
          Dec TELLER  
          Else
          Inc TELLER
       EndIf
          Toggle LED
    EndIf
    
    INTF = 0
Context Restore

OVER_IRQ:

    GIE  = 0
    INTE = 1
    GIE  = 1
    
RUN:

    Print At 1,1,Dec5 TELLER,
                
GoTo RUN

End

Als je haar maar goed zit, GROETEN LAMBIEK.

pic basic code:

Context Save
    If PULS_A = 1 Then
       If PULS_B = 1 Then
          Dec TELLER  
          Else
          Inc TELLER
       EndIf
          Toggle LED
    EndIf

Je moet je wel realiseren dat dit niet nauwkeurig is.

Als de boel tot stilstand komt met A=1 en B=0. Dat zou kunnen want allevier de combinaties komen voor. Als ie nu een micrometer achteruit gaat zodat A weer nul wordt. Geen interrupt als je die op positive edge triggert, en als dat wel gebeurt dan zorgt de eerste if dat er niets gebeurt. Maar als ie nu weer een micrometer naar voren kruipt, dan is B nogsteeds nul en incrementeert de teller. Deze voor/achter, kan gebeuren omdat je encoder fysiek staat te trillen maar ook als de encoder precies op een randje staat en het elektrisch niveau precies rond het omslagpunt zit, dan kan je deze situatie krijgen.

Wat ik wel eens gedaan heb is dat ik een 16-entry array heb gemaakt en dan zet ik A en B in een twee-bit variabele en die vul ik aan met A en B uit de vorige interrupt. De array vertelt dan wat er moet gebeuren. op 0b0000 staat dan: oude waarde AB=00, nieuwe waarde AB=00 dan.... doe niets: er is niets veranderd. Als het goed is krijg je dan geen interrupt, zo is de helft van de entries in de tabel voor nop. op positie 1, 0b0001 staat dan als AB van 00 naar 01 gaat. Deze overgang zit in bovenstaande code als een decrement. -1 in de tabel (Daar zal wel geen interrupt gebeuren en er zal wel niet geteld worden: mijn code telt op alle flanken en zal 4x sneller tellen, dus met de 500 counts encoder tot 2000 tellen in 1 omwenteling). De volgende entry: 2 = 0b0010 is de enige waar bovenstaande code van lambiek een telactie deed. Dit is van 00 naar 10, dus A is hoog geworden, terwijl B laag bleef: increment: +1 in de tabel.

code:


interrupt pcint (void)
{
  static unsigned char old;
  unsigned char cur;
  static const signed char table [16] = {
    0, -1, 1, 0, 
    -1, 0, 0, 1, 
   ... };
  cur = (digitalRead (PIN_A) << 1) | digitalRead (PIN_B);
  count += table[(old << 2) | cur];
  old = cur;
}

}

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 25 februari 2020 08:40:11 schreef rew:
Je moet je wel realiseren dat dit niet nauwkeurig is.

Als de boel tot stilstand komt met A=1 en B=0. Dat zou kunnen want allevier de combinaties komen voor. Als ie nu een micrometer achteruit gaat zodat A weer nul wordt.

Ja, daar heb je helemaal gelijk in rew. Dat had ik me nog niet gerealiseerd.

Als je haar maar goed zit, GROETEN LAMBIEK.

goedemiddag Heren/dames

ik ben bezig met een project hierbij maak ik een systeem. waarmee ik meubels in hoogte kan verplaatsen. dit doe ik met behulp van een PLC.
deze plc stuurt een controlbox aan die weer gekoppeld zit aan de actuatoren.

nu wil ik graag de hoogte meten van de meubel per poot.

weet iemand wat voor sensor ik hiervoor kan gebruiken.
ik dacht zelf misschien aan een:
- laser afstand meter.
- ultra soon sensor.
- sonar sensor

het gaat om een afstand van 200/300 MM

alle tips zijn welkom

bedankt alvast!

kun je niet het aantal pulsen van de actuatoren uitlezen? je kan dan meten/berekenen dat x aantal pulsen overeen komt met xx mm.

GJ_

Moderator

Dat denk ik ook: als je actuatoren hebt zonder positie terugkoppeling is er in de engineeringsfase iets heel erg fout gegaan.

Ultrasoon en sonar zie ik even geen verschil tussen. Hou er rekening mee dat de meeste sensoren het eerste stuk blind zijn.

nee ik kan hierbij niet gebruik maken van de encoder en pulsen aangezien dit wordt overgenomen door de controllebox

Werk je met stappenmotoren? dan weet je hoeveel stappen je uitstuurt, en wat er gaat gebeuren. je zou een home schakelaar / routine kunnen maken waardoor als ze van slag af zijn, of bij nieuw installatie of vervangen ook makkelijk zich kunnen instellen. Ik werkte ooit ergens en die machine werkte zo over lengtes van meer dan 1500 mm en op een 0,01 - 0,02 mm.

[Bericht gewijzigd door andre1973 op 13 maart 2020 15:19:50 (17%)]

zit sinds 2009 in de PV.
GJ_

Moderator

Op 13 maart 2020 15:12:46 schreef Gkanis:
nee ik kan hierbij niet gebruik maken van de encoder en pulsen aangezien dit wordt overgenomen door de controllebox

Dan kun je het signaal toch opsplitsen?

Lambiek

Special Member

Op 13 maart 2020 14:01:52 schreef Gkanis:
dit doe ik met behulp van een PLC.
deze plc stuurt een controlbox aan die weer gekoppeld zit aan de actuatoren.

Wat doet die controlbox precies? Want dit is weer nieuw, daar heb je het eerst niet over gehad.

Dus wat zit daar in?, heb je daar info over?, hoe stuur je die aan, met wat voor signaal?

Als je haar maar goed zit, GROETEN LAMBIEK.

Voor hoogte meting kan je ook een lineaire potmeter nemen of glaslineaal die je op bv digitale draaibanken zit.