duimwielschakelaars

Hardware die niet past in bovenstaande onderwerpen
Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

duimwielschakelaars

Berichtdoor Redundant » 16 Apr 2014, 20:26

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

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: duimwielschakelaars

Berichtdoor pjh » 16 Apr 2014, 20:43

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.

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: duimwielschakelaars

Berichtdoor Rudi » 17 Apr 2014, 21:04

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.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: duimwielschakelaars

Berichtdoor Redundant » 17 Apr 2014, 21:40

Goed idee, dat ga ik zeker uitproberen.
Ik hoop dat ik het goed begrijp.
Martin

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: duimwielschakelaars

Berichtdoor shooter » 20 Apr 2014, 18:39

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.
paul deelen
shooter@home.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: duimwielschakelaars

Berichtdoor Redundant » 20 Apr 2014, 19:22

Geweldig, Een schemaatje heb ik als beginner echt wel nodig.
Julie helpen mij geweldig.
Martin

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: duimwielschakelaars

Berichtdoor shooter » 20 Apr 2014, 19:45

paul deelen
shooter@home.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: duimwielschakelaars

Berichtdoor shooter » 20 Apr 2014, 19:46

je bent blijkbaar online dus even gezocht is sneller als zelf maken.
paul deelen
shooter@home.nl

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: duimwielschakelaars

Berichtdoor Redundant » 20 Apr 2014, 20:10

Mooie schema'.
Een mooi begin bij de te maken schakeling.
Gr., Martin

Berichten: 61
Geregistreerd: 28 Nov 2013, 13:55

Re: duimwielschakelaars

Berichtdoor Redundant » 06 Mei 2014, 18:03

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

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten