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.
@TS,
Lees dit eens door als je tijd en zin hebt.
https://www.circuitsonline.net/artikelen/view/48
Daar staat wat over encoders in.
benleentje
Golden Member
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?gclid=Cj0KCQiA… )
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?
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.
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?
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
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.
benleentje
Golden Member
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
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.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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.
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.
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
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
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.
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;
}
}
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.
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!
Anoniem
kun je niet het aantal pulsen van de actuatoren uitlezen? je kan dan meten/berekenen dat x aantal pulsen overeen komt met xx mm.
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
andre1973
zit sinds 2009 in de PV.
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 (17%)]
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?
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?
benleentje
Golden Member
Voor hoogte meting kan je ook een lineaire potmeter nemen of glaslineaal die je op bv digitale draaibanken zit.