duimwielschakelaars
37 berichten
• Pagina 1 van 4 • 1, 2, 3, 4
duimwielschakelaars
Hallo allemaal, ik ben momenteel bezig om met drie duimwielschakelaars een getal tussen 0 en 999 te lezen.
Per duimwielschakelaar zijn er de 4 uitgangen 1,2,4,8 alsmede C=common
Aangesloten 5V op C en dan 4 leds met weerstand 390 ohm geeft prima binaire uitlezing.
Maar nu wil ik 3 schakelaars aan elkaar koppelen. Dat zou betekenen 12 ingangen van de MEGA2560. Een beetje zunde.
Die tweede schakelaar kan via een weerstand naar de 2e C waardoor er andere waarden gelezen zullen worden, tevens kan dit met de derde schakelaar gebeuren.
Dat betekend dat er dan 30 waarden moeten worden gecontroleerd en bepaald.
Is er een andere manier om Duimwielschakelaars in te lezen, eenvoudiger uiteraard?
hulp graag.
Martin
Per duimwielschakelaar zijn er de 4 uitgangen 1,2,4,8 alsmede C=common
Aangesloten 5V op C en dan 4 leds met weerstand 390 ohm geeft prima binaire uitlezing.
Maar nu wil ik 3 schakelaars aan elkaar koppelen. Dat zou betekenen 12 ingangen van de MEGA2560. Een beetje zunde.
Die tweede schakelaar kan via een weerstand naar de 2e C waardoor er andere waarden gelezen zullen worden, tevens kan dit met de derde schakelaar gebeuren.
Dat betekend dat er dan 30 waarden moeten worden gecontroleerd en bepaald.
Is er een andere manier om Duimwielschakelaars in te lezen, eenvoudiger uiteraard?
hulp graag.
Martin
Advertisement
Re: duimwielschakelaars
Op dit forum komt de Hc595, de schuif- of shiftregister vaak aan bod om van 3 arduinopinnen ip onbeperkte outputlijnen te krijgen.
Hc595 = serieel uit de arduino, parallel uit de shiftregister.
Jij hebt Mischien iets aan de hc165.
Deze is parallel in de hc165 en dan serieel (data, clock, latch) de arduino IN.
Hc595 = serieel uit de arduino, parallel uit de shiftregister.
Jij hebt Mischien iets aan de hc165.
Deze is parallel in de hc165 en dan serieel (data, clock, latch) de arduino IN.
Re: duimwielschakelaars
Zeven pinnen kan ook, is al bijna de helft uitgespaard
De common van iedere duimwielschakelaar (dws) aan een afzonderlijke Arduino pin = 3 pinnen.
Alle BCD uitgangen groeperen en op een Arduino pin aansluiten, dus van iedere dws de 1'en aan elkaar en naar een Arduino pin, alle 2'en naar een volgende Arduino pin, en zo ook alle 4'en en alle 8'en = 4 pinnen. Totaal zeven.
In je code scan je iedere dws afzonderlijk door de common (van 1 van de drie dws) even hoog te maken en dan de toestand van de BCD pinnen in te lezen.
Multiplexen als het ware.
De common van iedere duimwielschakelaar (dws) aan een afzonderlijke Arduino pin = 3 pinnen.
Alle BCD uitgangen groeperen en op een Arduino pin aansluiten, dus van iedere dws de 1'en aan elkaar en naar een Arduino pin, alle 2'en naar een volgende Arduino pin, en zo ook alle 4'en en alle 8'en = 4 pinnen. Totaal zeven.
In je code scan je iedere dws afzonderlijk door de common (van 1 van de drie dws) even hoog te maken en dan de toestand van de BCD pinnen in te lezen.
Multiplexen als het ware.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: duimwielschakelaars
Goed idee, dat ga ik zeker uitproberen.
Ik hoop dat ik het goed begrijp.
Martin
Ik hoop dat ik het goed begrijp.
Martin
Re: duimwielschakelaars
rudi heeft een beetje gelijk, maar mist iets
elke common komt op een aparte uitgang.
zet nu 1 uitgang aan, dan zie je op de 4 ingangen de bcd van schakelaar 1
daarna uitgang 2 enz.
tot zover rudi, hij is echter vergeten om op elke bcd uitgang een diode te zetten, anders loopt de stroom van de ene bcd naar de andere. stel even bcd1 op 1 en bcd2 op 3, dan is er een sluiting tussen in 1 en in2 en dus is de ingelezen code fout.
mocht het niet duidelijk zijn dan een berichtje en maak ik een schema voor je.
elke common komt op een aparte uitgang.
zet nu 1 uitgang aan, dan zie je op de 4 ingangen de bcd van schakelaar 1
daarna uitgang 2 enz.
tot zover rudi, hij is echter vergeten om op elke bcd uitgang een diode te zetten, anders loopt de stroom van de ene bcd naar de andere. stel even bcd1 op 1 en bcd2 op 3, dan is er een sluiting tussen in 1 en in2 en dus is de ingelezen code fout.
mocht het niet duidelijk zijn dan een berichtje en maak ik een schema voor je.
paul deelen
shooter@home.nl
shooter@home.nl
Re: duimwielschakelaars
Geweldig, Een schemaatje heb ik als beginner echt wel nodig.
Julie helpen mij geweldig.
Martin
Julie helpen mij geweldig.
Martin
Re: duimwielschakelaars
je bent blijkbaar online dus even gezocht is sneller als zelf maken.
paul deelen
shooter@home.nl
shooter@home.nl
Re: duimwielschakelaars
Hallo allemaal, hier ben ik eindelijk weer eens.
Dit moet een Programma worden tbv een Verdeelapparaat voor bijv een fraisbank.
Inmiddels heb ik de gegevens van de 3 Duimwielschakelaar (DWS) zichtbaar.
C = aangesloten op de 5V en uiteraard de koppelweerstanden aan 1,2,4,8 22K naar de GND.
Maar nu wil ik 1X inlezen en de uitkomst (total) gebruiken om het gekozen (programma) Routine uit te voeren.
Zoals het nu is gemaakt begint het inlezen steeds opnieuw en dus ook het optellen van (total).
Het vreemde is dat er steeds het totaal van 15 uit komt in de stand dat de 3 schakelaars op nul staan
Uiteindelijk zal het getal wat te zien is op de DWS een routine moeten aansturen.
Ik heb gebruik gemaakt van de schakeling die Shooter heeft voorgesteld, met dien verstande dat ik de aansluitingen heb verwisseld, 5v aan de Common. En de 4Rs aan GND. De dioden zijn omgekeerd.
http://proteanlogic.com/applications/An043_old.pdf
// http://www.brainstorm-vzw.be/stappenmotor/
// Webside met uitleg Stappenmotor.
// Duimwielschakelaars met hulp van http://proteanlogic.com/applications/An043_old.pdf
// Arduino MEGA_2560
// Programma voor verdeeltafel-aansturing met 4_draden stappenmotor // en LCD_scherm ?
// Verdeeltafel kan met 4/60/90 verhouding zijn.
// Bediening
int Aan = 0; // Led Blauw betekend Schakeling = Aan TESTLED = Poort 13
int Uit = 0; // Alles Uit
int PKS = 6;
int readSwitch = 0;
// ProgrammaKeuze_schakelaar voor Nr.1= Graden opgave Nr.2 = Verdeling opgeven Verhouding 3,4,5 = 40/60/90 of 6 t/m 0 = reserve
// int DWS = 0; // Digitaal in Programma
int total = 0;
// Programma Keuze
int PKS1A = A8; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS2A = A9; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS4A = A10; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS8A = A11; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
// Aantal Bewerkingen
int DWS1A = A12; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS2A = A13; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS4A = A14; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS8A = A15; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
// int ledPinPKS = 0; // Keuze uit te voeren Routine vastleggen met 3-Duimwielschakelaars 000 t/m 999
// int HoHT = 0; // Aantal stappen per Tand (afstand)
// int inputPinDWS = 0; // Totaal van uitlezing Duimwielschakelaars 3 rijen 10 standen // = digitaal
// int inputPinPKS = A0; // PKS Programma_Keus = 4e Duimwielschakelaar_stand_1 t/m 0
// int inputPinAU = A1; // Aan/Uit schakelen
int ledPinSR = 10; // 10PWM Led Groen Stappenmotor staat (Ready) klaar voor opdracht
int ledPinRM = 11; // 11PWM Led Rood Stappenmotor draait (Revolution_Motor)
int ledPinAU = 13; // 12PWM Led Blauw Aan/Uit TESTLED = Poort 13
int ledPinWW40 = 15; // 15PWM Gele Led Wormwielverhouding 1:40 // indien geen LCD
int ledPinWW60 = 16; // 16PWM Gele Led Wormwielverhouding 1:60 // indien geen LCD
int ledPinWW90 = 17; // 17PWM Gele Led Wormwielverhouding 1:90 // indien geen LCD
// Stappenmotor
int dirpin = 22; // 22 digitaal Draairichting Stappenmotor
int steppin = 24; // 24 digitaal Aantal stappen
int speedpin = 26; // 26 digitaal Snelheid stappenmotor
void setup()
{
// pinMode (inputPinAU, INPUT) ; // A1 stand lezen Aan/Uit schakelaar
// pinMode (inputPinPKS, INPUT) ; // A0 stand lezen losse/enkele Duimwielschakelaar = Programmakeuzeschakelaar
// pinMode (inputPinDWS, INPUT) ; // A2 stand lezen 3 Duimwielschakelaars voor aantal tanden/graden
pinMode (ledPinAU, OUTPUT); // 12PWM Blauwe Led
pinMode (ledPinWW40, OUTPUT); // 4PWM WW40 Gele Led
pinMode (ledPinWW60, OUTPUT); // 6PWM WW60 Gele Led
pinMode (ledPinWW90, OUTPUT); // 9PWM WW90 Gele Led
pinMode (ledPinSR, OUTPUT); // 10PWM Groene Led, Stappenmotor klaar voor nieuw signaal
pinMode (ledPinRM, OUTPUT); // 11PWM Rode Led, stappenmotor draait
pinMode (PKS1A, INPUT); // Routine is gemaakt als programma Duimwiel_1-schijf //
pinMode (PKS2A, INPUT); // van de uitkomst worden cijfers en tientallen en honderdtallen
pinMode (PKS4A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (PKS8A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (DWS1A, INPUT); // Routine is gemaakt als programma Duimwiel_1-axis //
pinMode (DWS2A, INPUT); // van de uitkomst worden cijfers en tientallen en honderdtallen
pinMode (DWS4A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (DWS8A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
// We zeggen dat de poorten voor de stappen en de pulsen outputs zijn.
pinMode (dirpin, OUTPUT); //
pinMode (steppin, OUTPUT); //
Serial.begin(9600);
}
void loop()
{
{
int (total = 0);
if ( digitalRead (PKS1A) == HIGH ) { total += 1 ; }
if ( digitalRead (PKS2A) == HIGH ) { total += 2 ; }
if ( digitalRead (PKS4A) == HIGH ) { total += 4 ; }
if ( digitalRead (PKS8A) == HIGH ) { total += 8 ; }
// Serial . println ( total ) ;
}
{
Serial . println ( total ) ;
Serial . println ( " " ) ; // sends switch value to serial monitor box
Serial . println ( PKS1A ) ; // sends switch value to serial monitor box
Serial . println ( PKS2A ) ; // sends switch value to serial monitor box
Serial . println ( PKS4A ) ; // sends switch value to serial monitor box
Serial . println ( PKS8A ) ; // sends switch value to serial monitor box
Serial . println ( " " ) ; // sends switch value to serial monitor box
Serial . println ( " " ) ; // sends switch value to serial monitor box
delay(1000);
} }
Gr, Martin
Dit moet een Programma worden tbv een Verdeelapparaat voor bijv een fraisbank.
Inmiddels heb ik de gegevens van de 3 Duimwielschakelaar (DWS) zichtbaar.
C = aangesloten op de 5V en uiteraard de koppelweerstanden aan 1,2,4,8 22K naar de GND.
Maar nu wil ik 1X inlezen en de uitkomst (total) gebruiken om het gekozen (programma) Routine uit te voeren.
Zoals het nu is gemaakt begint het inlezen steeds opnieuw en dus ook het optellen van (total).
Het vreemde is dat er steeds het totaal van 15 uit komt in de stand dat de 3 schakelaars op nul staan
Uiteindelijk zal het getal wat te zien is op de DWS een routine moeten aansturen.
Ik heb gebruik gemaakt van de schakeling die Shooter heeft voorgesteld, met dien verstande dat ik de aansluitingen heb verwisseld, 5v aan de Common. En de 4Rs aan GND. De dioden zijn omgekeerd.
http://proteanlogic.com/applications/An043_old.pdf
// http://www.brainstorm-vzw.be/stappenmotor/
// Webside met uitleg Stappenmotor.
// Duimwielschakelaars met hulp van http://proteanlogic.com/applications/An043_old.pdf
// Arduino MEGA_2560
// Programma voor verdeeltafel-aansturing met 4_draden stappenmotor // en LCD_scherm ?
// Verdeeltafel kan met 4/60/90 verhouding zijn.
// Bediening
int Aan = 0; // Led Blauw betekend Schakeling = Aan TESTLED = Poort 13
int Uit = 0; // Alles Uit
int PKS = 6;
int readSwitch = 0;
// ProgrammaKeuze_schakelaar voor Nr.1= Graden opgave Nr.2 = Verdeling opgeven Verhouding 3,4,5 = 40/60/90 of 6 t/m 0 = reserve
// int DWS = 0; // Digitaal in Programma
int total = 0;
// Programma Keuze
int PKS1A = A8; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS2A = A9; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS4A = A10; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
int PKS8A = A11; // analogread ProgrammaKeuzeSchakelaar Single_Duimwiel
// Aantal Bewerkingen
int DWS1A = A12; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS2A = A13; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS4A = A14; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
int DWS8A = A15; // analogread Bepalen aantal bewerkingen met 3_voudige Duimwiel
// int ledPinPKS = 0; // Keuze uit te voeren Routine vastleggen met 3-Duimwielschakelaars 000 t/m 999
// int HoHT = 0; // Aantal stappen per Tand (afstand)
// int inputPinDWS = 0; // Totaal van uitlezing Duimwielschakelaars 3 rijen 10 standen // = digitaal
// int inputPinPKS = A0; // PKS Programma_Keus = 4e Duimwielschakelaar_stand_1 t/m 0
// int inputPinAU = A1; // Aan/Uit schakelen
int ledPinSR = 10; // 10PWM Led Groen Stappenmotor staat (Ready) klaar voor opdracht
int ledPinRM = 11; // 11PWM Led Rood Stappenmotor draait (Revolution_Motor)
int ledPinAU = 13; // 12PWM Led Blauw Aan/Uit TESTLED = Poort 13
int ledPinWW40 = 15; // 15PWM Gele Led Wormwielverhouding 1:40 // indien geen LCD
int ledPinWW60 = 16; // 16PWM Gele Led Wormwielverhouding 1:60 // indien geen LCD
int ledPinWW90 = 17; // 17PWM Gele Led Wormwielverhouding 1:90 // indien geen LCD
// Stappenmotor
int dirpin = 22; // 22 digitaal Draairichting Stappenmotor
int steppin = 24; // 24 digitaal Aantal stappen
int speedpin = 26; // 26 digitaal Snelheid stappenmotor
void setup()
{
// pinMode (inputPinAU, INPUT) ; // A1 stand lezen Aan/Uit schakelaar
// pinMode (inputPinPKS, INPUT) ; // A0 stand lezen losse/enkele Duimwielschakelaar = Programmakeuzeschakelaar
// pinMode (inputPinDWS, INPUT) ; // A2 stand lezen 3 Duimwielschakelaars voor aantal tanden/graden
pinMode (ledPinAU, OUTPUT); // 12PWM Blauwe Led
pinMode (ledPinWW40, OUTPUT); // 4PWM WW40 Gele Led
pinMode (ledPinWW60, OUTPUT); // 6PWM WW60 Gele Led
pinMode (ledPinWW90, OUTPUT); // 9PWM WW90 Gele Led
pinMode (ledPinSR, OUTPUT); // 10PWM Groene Led, Stappenmotor klaar voor nieuw signaal
pinMode (ledPinRM, OUTPUT); // 11PWM Rode Led, stappenmotor draait
pinMode (PKS1A, INPUT); // Routine is gemaakt als programma Duimwiel_1-schijf //
pinMode (PKS2A, INPUT); // van de uitkomst worden cijfers en tientallen en honderdtallen
pinMode (PKS4A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (PKS8A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (DWS1A, INPUT); // Routine is gemaakt als programma Duimwiel_1-axis //
pinMode (DWS2A, INPUT); // van de uitkomst worden cijfers en tientallen en honderdtallen
pinMode (DWS4A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
pinMode (DWS8A, INPUT); // bij elkaar opgeteld en aangeboden (in programma te gebruiken)
// We zeggen dat de poorten voor de stappen en de pulsen outputs zijn.
pinMode (dirpin, OUTPUT); //
pinMode (steppin, OUTPUT); //
Serial.begin(9600);
}
void loop()
{
{
int (total = 0);
if ( digitalRead (PKS1A) == HIGH ) { total += 1 ; }
if ( digitalRead (PKS2A) == HIGH ) { total += 2 ; }
if ( digitalRead (PKS4A) == HIGH ) { total += 4 ; }
if ( digitalRead (PKS8A) == HIGH ) { total += 8 ; }
// Serial . println ( total ) ;
}
{
Serial . println ( total ) ;
Serial . println ( " " ) ; // sends switch value to serial monitor box
Serial . println ( PKS1A ) ; // sends switch value to serial monitor box
Serial . println ( PKS2A ) ; // sends switch value to serial monitor box
Serial . println ( PKS4A ) ; // sends switch value to serial monitor box
Serial . println ( PKS8A ) ; // sends switch value to serial monitor box
Serial . println ( " " ) ; // sends switch value to serial monitor box
Serial . println ( " " ) ; // sends switch value to serial monitor box
delay(1000);
} }
Gr, Martin
37 berichten
• Pagina 1 van 4 • 1, 2, 3, 4
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten