snelheid ronddraaien steppermotor


Is een TDA1003 voor aansturing van steppermotoren dan?

If you want to succeed, double your failure rate.
Lambiek

Special Member

Als je er vier gebruikt zou het kunnen ja, je kan een stappenmotor ook met een sinusvormig signaal aansturen. Als je met microstepping werkt krijg je ook een digitale sinus.

Ik heb wel vaker gehoord dat ze het via een versterker doen, een grote klant van vroeger heeft het eens gedaan. Alleen het positioneren wordt wat moeilijker, dat wordt nog een soort uitdaging.

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik heb even de datasheet opgesnord, en hoewel alles kan natuurlijk zou ik lekker 2 van die L6203's pakken (vooropgesteld dat die al in de grijpvoorraad liggen, want anders zou je waarschijnlijk zo'n kant-en-klaar stepperdrivertje kiezen van het soort dat rew aandraagt).

If you want to succeed, double your failure rate.

Voor kleine steppers gebruik ik altijd de LB1973 van Sanyo...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Even een update. De hardware was vrij snel klaar maar de software kant vroeg heel wat meer werk. Jochem was zo aardig een stukje test software te schrijven en te helpen met dingen uitzoeken mbt de aansturing van de motor. En daarnaast de hoognodige geestelijke ondersteuning ;-)

Het viel niet mee maar het is gelukt. Dankzij hem weet ik nu ook waarom mijn arduino projecten niet vooruit te branden waren en het belang van fuses bij het branden van de Atmel Mega328 mbv mijn TL866A prorammer.

Mijn Arduino is iets te vaak mishandeld dus ik schrijf de software in de IDE, gooi het eruit als een hex file naar de TL866A. Ik maak meestal een 6 pin ICP op het pcb.
Ik heb zelf ooit een Arduino achtig ding met LCD genmaakt. Maar die bleken dus iets van 24x te langzaam. Ik gebruik nu Atmels zonder bootloader.

Ik heb een instelmenu gemaakt waar ik best trots op ben, een 10 slag pot met tellerknop (net als de delay knop op analoge scoops) en een drukknop de instellingen doe.
Dankzij het map commando is de aanduiding op die knop gelijk aan de display.
Waarom, simpel, die heeft een blokkeer knopje :-) (wat achteraf dank zij de firmware niet nodig bleek maar het stelt wel lekker snel in)

Er komt op de display de vermelding van de parameter, zoals layers, turn per layer, draaddikte, richting feed motor. De potmeter wordt gelezen door de ADC, de waarde gemapped tot 0-1000 of 0-100, dan druk ik op OK en gaat hij naar de volgende. Dat kost nauwelijks tijd. Ik vind het prettiger dan een rotary encoder

Er zit ook een pauze knop op die de boel stilzet zodat ik bv tape kan aanbrengen.

De omwentelingen worden door een IR lichtsluis geteld. Dat heeft me wel wat hoofdbrekens gekost toen het ding wel op snelheid werkte en ik de tab breder had gemaakt ivm extern licht, doorliep hij de loop een keer of twintig tijdens zo'n doorgang. Ik wilde geen wachtlussen toestand. Hij vergelijkt nu steeds een bit, die wordt bij t0 van de onderbreking hoog en pas bij de wisseling daarop van hoog naar weer 0 en telt hij er 1 turn bij op.

De beide motors staan onder controle van de Atmel. De stepper 100% (richting, start/stop, stapgrote en snelheid), de windermotor alleen aan/uit. De snelheid en draairichting daarvan is analoog geregeld zodat ik
tijdens het wikkelen makkelijk de snelheid kan regelen.

De stepper wilde maar niet goed werken tot ik er achter kwam dat het niet werkt als je de motorspeed (rpm) niet eerst zet. :-( Dat heeft me verruit de meeste tijd gekost.

Gisteren nog een mooiere "feed-kop" gemaakt met een messing buisje stukje teflonslang. Daar past weer een "liner" in in de vorm van zo'n rood spuitbus rietje (0,6mm) dus prima voor het meeste CU draad. Dat rietje kan ik uitschuiven zodat het zo dicht mogelijk bij de wikkelkamer kan komen.

De software is werkbaar maar ik zou er nog wat dingen bij willen die nu nog te ver gaan voor mijn programmeer kennis. In ieder geval kan ik zo de hardware testen

En nu natuurlijk proberen of het ook echt allemaal (handig) werkt. En zoja de electronica wat fatsoeneren (voornamelijk in een kastje bouwen ipv open een bloot op een stuk koelprofiel etc.
Misschien een trafo erbij zodat ik hem overal kan zetten (nu moet hij bij 2 labvoedingen in de buurt staan)

Ik ben blij dat ik voor digitaal ben gegaan want is wel heel gaaf geworden Maar zonder de hulp van Jochem was ik al lang gestopt. Analoog was het lang niet zo mooi en gebruiksvriendelijk geworden maar was ik waarschijnlijk al lang klaar geweest.

Ik heb ook Atmel studio 7 geinstalleerd. Dat echte C taaltje is flink wat ingewikkelder maar voor iemand die met een vinger typed en commando's, variabelen etc vergeet is het met die semi-auto aanvulling wel veel makkelijker werken. En zoiets als een variabele vergeten te resetten komt er in een debug sim hopelijk wel uit. Maar of ik daar ook echt uit kom weet ik niet. Dingen als DDRB.1 |=(1 <<5) zijn niet echt makkelijk (ik verzin maar even wat) als je gewend bent met digitalRead te werken. Het blijkt wel heel makkelijk te zijn zelf commandos/macros te maken met #define

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
Lambiek

Special Member

Zo, dat was een heel verhaal Fred. Maar nu zijn we wel reuze benieuwd geworden naar het resultaat natuurlijk. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Bij deze vast de code. Net 2575 windingen van 0,11mm er op gelegd. 8 lagen van 302 per laag. Daarna nog een halve van 159. Het resultaat is superstrak. Ik ben in ieder geval erg blij met het resultaat.

Morgen zal ik wat foto's maken.
Er moeten nog een kleine aanpassing komen. Een mechanische om iets meer ruimte tussen spoel en langsvoeding te krijgen om zo dicht mogelijk tot de rand te wikkelen maar dat is zo gedaan. En gelijk de geleiderail wat verstevigen voor een nog strakker resultaat.

c code:

#include <LiquidCrystal.h>
#include <Stepper.h>

int pause = 0;                          // pin 2 atmel is pause, latching
int OKknop = 1;                         // pin 3 atmel, non latching pushbutton
int richtingKnop = 13;                  // pin 19 atmel, spdt switch,  open (high) and gnd(low)
int motor = A4;                         // pin 27 atmel, motor relais
int potmeter = A0;                      // pin 23 atmel, set potmeter 
int sluis = 12;                         // pin 18 atmel, 5V TTL. trigger is high output from sensor

const int stepsPerRevolution = 200;     // depending stepper motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

int stepCount = 0;                     // number of steps the motor has taken
int potDia;                            // wire diameter in micrometer
int turnCount = 0;                     // counts ir sensor triggers, 1 per turn
int StepsPerTurn;                      // steps of motor per turn
int richting = 1;                      // direction of steppermotor HIGH is forward,
int mux = 1;                           // 1 is FW, -1 BW multiplier          
int potLay;                            // number of set layers
int potTurn;                           // number of wire-turns
int layer = 1;                         // counter
int stepdistance = 625;                // 1 turn = 1250 um / 200 = 6,25 um/stap ivm float x100
int buttonState = 0;                   // current state of the button
int lastButtonState = 0;               // previous state of the button
int teller = 0;

void setup() 
{
  lcd.begin(16, 2);                       // set up the LCD's number of columns and rows:
  lcd.print("Welkom    ");                
  delay(500);
  lcd.clear();
  
  //-----------------------------------
  // declaring ports
  //------------------------------------
  pinMode(pause, INPUT_PULLUP);           // standard = HIGH, pause button
  pinMode(OKknop, INPUT_PULLUP);          // confirm button 
  pinMode(richtingKnop, INPUT_PULLUP);    // direction of stepper motor spdt switch
  pinMode(motor, OUTPUT);                 // relais winder motor
  pinMode(sluis, INPUT);                  // 1 positive puls per revolution
  
}

void loop() 
{
  int potVal;                             // the value of the potentiometer
  
  //----------------------------------------
  // set up number of turns per layer
  //----------------------------------------
  while (digitalRead(OKknop) == HIGH) 
    {
    lcd.setCursor(0,0);
    lcd.print("n per laag:    ");
    lcd.setCursor(12,0);
    potVal = analogRead(potmeter);
    potTurn = map(potVal, 0, 1023, 0, 1000);
    lcd.print(potTurn);
    lcd.setCursor(0,1);
    lcd.print("OK to set");
    delay(100); 
    }
   lcd.clear();  
   delay(500);
  

//-------------------------------------------------------
// set up number of layers 
//-------------------------------------------------------
  while (digitalRead(OKknop) == HIGH) 
  {
    lcd.setCursor(0,0);
    lcd.print("layers=:    ");
    lcd.setCursor(9,0);
    potVal = analogRead(potmeter);
    potLay = map(potVal, 0, 1023, 0, 100);
    lcd.print(potLay);
    lcd.setCursor(0,1);
    delay(100); 
  }
lcd.clear(); 
delay(500);


  //---------------------------------
  // set first layer direction
  //---------------------------------  
  while (digitalRead(OKknop) == HIGH) 
  {
    lcd.setCursor(0,0);
    lcd.print("direction feed");
    lcd.setCursor(0,1);
    lcd.print( "= ");  
    richting = digitalRead(richtingKnop);
     if (richting == LOW)
        {
         lcd.setCursor(2,1);
         lcd.print("naar voren ");
         mux = 1;
        }
      if (richting == HIGH) 
        {
         lcd.setCursor(2,1);
         lcd.print("naar achter ");
         mux = -1;
        }  
    delay(100);  
  }
  lcd.clear(); 
  delay(500);
    
  
  //------------------------------------------------
  // set up wire diameter to calculate steps/turn
  //------------------------------------------------
  while (digitalRead(OKknop) == HIGH) 
  {
    lcd.setCursor(0,0);
    lcd.print("WireDia - microm");
    lcd.setCursor(0,1);
    potVal = analogRead(potmeter);
    potDia  = map(potVal, 0, 1023, 0, 1000);
    lcd.print(potDia);
    lcd.setCursor(5,1);
    lcd.print("OK to set"); 
    StepsPerTurn = (potDia * 100) / stepdistance;
    turnCount = 0;
    stepCount = 0;
    delay(100); 
  }
  
  lcd.clear();
  delay(500);
  
  teller = 0;
  layer = 1;
  turnCount = 0;
  lcd.clear();
  
  //------------------------------------
  // winding motor control
  //------------------------------------
   myStepper.setSpeed(30);
   while (layer <= potLay )                   // proceed upto max number of layers
   {
    digitalWrite(motor, HIGH);                // relais winding motor
    StepsPerTurn = StepsPerTurn * mux;        // ivm direction , mux inverteert 
    
    while (turnCount <= potTurn)               // proceed until max number of turns per layer
      {   
        buttonState = digitalRead(sluis);
        if (buttonState != lastButtonState)    // compare the buttonState to its previous state
          {
            if (buttonState == HIGH)           // if the state has changed, increment the counter
              {
                turnCount++ ;                   // if the current state is HIGH then the button wend from off to on:
                myStepper.step(StepsPerTurn);
                lcd.setCursor(0,0);
                lcd.print("layer =  ");
                lcd.setCursor(12,0);
                lcd.print(layer);
                lcd.setCursor(0,1);
                lcd.print("turns =  ");
                lcd.setCursor(9,1);
                lcd.print(turnCount);
              } 
          }
        lastButtonState = buttonState;                    // save the current state as the last state  
      
    
        while (digitalRead(pause) == LOW)     // pause all
          {
            lcd.setCursor(0,0);
            digitalWrite(motor, LOW);
            lcd.print(".....WAIT......."); 
            delay(100);
            lcd.clear();
          } 
          
          digitalWrite(motor, HIGH);
      }
 
      delay(10);
      layer++;
      turnCount=0;
      lcd.clear();
      //mux = mux * -1;      //next layer the feed must run back to the start
}
       
   digitalWrite(motor, LOW);
 
}
www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

Heb ik zelf-programmerende software geschreven ? Een soort AI.
Vandaag de 0,45mm laag erop en daar ontstonden 2 problemen. De stapgrote is te klein. Als ik hem op 1000 micrometer draaddiameter zet gaat het bijna goed. Ik heb nu een routine toegevoegd waarbij ik het rpm kan instellen. Misschien gaat hij te traag omdat hij ipv 0,11 mm nu 0,45 moet afleggen. Dat is 5x de afstand.

Maar nu het vreemde. De draairichting zet ik met een wisselwerking tussen schakelaar en het menu. Dat werkte prima maar bij 0,45 gaat hij net de andere kant op. De schakelaar werkt want ik kan hem zo weer corrigeren maar hoe dat kan ?

Zou er iets met het rekenwerk fout gaan. Dat er iets overloopt ofzo ? Long integer ipv integer ?

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

Welkom in de wondere wereld van onverklaarbare fouten in je code opsnorren. Debuggen noemen ze dat :)

Ik had het al per mail gezegd, maar ik vind het heel knap van je dat je bovenstaande zelf in elkaar hebt gezet en dat het in essentie doet wat je ermee wilt bereiken. Het is echter op een heel aantal punten 'beginnerscode' (geeft niet, al doende leert men) en dat maakt het op een bepaald moment ook veel lastiger om te zien waar iets mis gaat. Combineer dat met de belabberde debuggingmogelijkeden van een Arduino, en het feest is compleet :+
Groot voordeel bij foutzoeken in je code is wel dat je een display tot je beschikking hebt. Dat zou je bijvoorbeeld kunnen gebruiken om van een paar essentiële variabelen de waarde te printen. Dan kun je controleren of dat met je verwachtingen overeenkomt.

Een int gaat op een Arduino UNO/Duemilanove/.. (lees: ATmega328*) tot 32767. Ik heb niks nagerekend, maar je zou zelf eens kunnen redeneren of er iets uit de limieten zou kunnen gaan lopen.

Maar ik zal vanmiddag eens even een stukje "deftige software" voor je schrijven Fred. Gewoon de functionaliteit die je nu ook hebt, maar dan een beetje schoner. Dat kun je dan zien als een schone lei waar je zelf weer lekker op kunt voortborduren. Het is altijd goed om wat truukjes af te kijken. Het zijn veelal dingen die niet moeilijk zijn om te begrijpen, maar die je een keer gezien moet hebben zodat je ze zelf toe kunt passen. Leren programmeren bestaat zoals veel disciplines uit 1) goed afkijken bij iemand die het al kan, en 2) het veel zelf te oefenen daarbij vooral goed veel fouten te maken die je bij voorkeur uiteindelijk zelf weet op te lossen.

If you want to succeed, double your failure rate.

Op 11 juli 2016 12:13:55 schreef Jochem:

Een int gaat op een Arduino UNO/Duemilanove/.. (lees: ATmega328*) tot 32767.

En als dat te weinig is kan je "long" 32 bits, of "long long" 64 bits gebruiken. Wel gaat eea dan langzamer rekenen natuurlijk, maar voor iets wat je 1x uitrekenet naar aanleiding van user input kan dat natuurlijk nooit een probleem zijn. Maar in andere gevallen wel.

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

Overleden

Op 9 juli 2016 22:21:16 schreef fred101:Morgen zal ik wat foto's maken.

Ben wel benieuwd !

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Ik heb even zitten kijken..

Bij een draaddiameter groter dan 327µm zal hij overflowen denk ik. Die wordt namelijk *100 gedaan en dan zit je boven 32767 als resultaat. Leuk feitje: dan klapt hij om naar negatief en dan heb je meteen de verklaring voor de omgekeerde wikkelrichting.

Een long is niet gelijk nodig in dit geval; zo lang je draaddiameter de 655µm nog niet overschrijdt kun je volstaan met een unsigned int. Deze moet je wel even strategisch kiezen, omdat je later voor StepsPerTurn juist weer negatief wilt kunnen gaan, maar daar heb je gelukkig dat grote bereik niet meer nodig.

Ik denk als je potDia nou als unsigned int declareert, dan krijg je een 'int to unsigned int promotion' voor alle andere termen in de berekening StepsPerTurn = (potDia * 100) / stepdistance;, dus dan mag je tussenresultaat max 65535 zijn.

Samengevat voor Fred:

c code:

int potDia;            // wire diameter in micrometer

vervangen door

c code:

unsigned int potDia;   // wire diameter in micrometer

zou het probleem op moeten lossen tot aan 655µm draaddiameter.

Ik ga even verder per mail, want daar kreeg ik een stuk code waarin ik commentaar zag staan dat niet strookt met de theorie:

c code:

int potSpeed; //speed in RPM, voor 0,11mm is 30 voldoende, voor 0,5 veel sneller (150)

Het aantal RPM voor je stappenmotor zou bij een draaddiameter van 0,5mm niet meer dan 20RPM hoeven te zijn, uitgaande van een maximale snelheid van 50RPM van je spoellichaam (apart regelbare DC-motor, waarvan Fred de maximale snelheid eerder per mail aan mij had doorgegeven). Voor de mee-rekenaars: spoed van de spindel aan de as van de stappenmotor is 1,25mm.

Ik maak even een elementair stukje test-code Fred, je krijgt zo hebt inmiddels een uitgebreide email.

If you want to succeed, double your failure rate.

Mooi, dan had ik het goed dat het getal te groot werd. Vanmorgen nog even met long geprobeerd maar dat deed ik vast verkeerd want het veranderde niet.
0,65mm is meer dan genoeg, Ik heb wel eens dikker draad gebruikt maar dat waren ununs of luchtspoelen.

Ik heb net die unsigned aangepast maar nog niet kunnen testen. Er ligt nu een patient in onderdelen op de tafel. (gedeeltelijk, de andere helft staat in de garage, een zekering automaat van 50 kilo) Misschien vanavond nog, maar na een uur achter de microscoop in een pcb zitten graven op zoek naar mogelijke traces voor de verdampte via. Maar nu wil mijn rug even niet meer.

De handbedien routine werkt maar verdient geen schoonheidsprijs. Dit lijkt me eigenlijk iets voor een interupt.

Dat commentaar mbt die snelheid was een aantekening voor mijzelf omdat ik dacht dat hij daardoor te kleine stappen nam. Maar dat is dus de schuld van het omklap bitje. Met 0,11 mm klopt het perfect. 304 windingen x 0,11 mm en maakt 33,44 mm wat aardig overeenkomt met de gemeten 33,5mm.
Pas rond de 325 µm gaat het fout (even uit mijn hoofd)

Ik heb een ICSP connector met de layout van de arduino op het pcb gemaakt en een kabeltje voor de TL866A maar dat is geen succes. Ofwel, het doet niks anders dan wat meldingen maken over een of andere identiteit crisis. Wel jammer want nu zit de boel zo redelijk netjes met de connector goed bereikbaar maar omdat dat niet werkt moet ik steeds op de tast onder een rothoek zo'n 28 poter verwisselen.

Ik heb een filmpje gemaakt maar dat moet ik nog van mijn telefoon naar de computer zien te krijgen.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

Volgens mij hangt er wat I/O aan de pinnen die je normaal voor ICSP gebruikt.. je stepper-driver denk ik. Goed kans dat dat een te zware belasting vormt.

Ik zou wel graag willen weten wat de maximale snelheid is waarbij jouw stepper nog fatsoenlijk draait. Zou je die code van mij die ik je heb gemaild toch eens erin willen schieten om dat te proberen?

Verder ben ik wat in elkaar aan het programmeren met, voor mijn gevoel, een wat handigere bediening van dat manueel corrigeren. Maar het is moeilijk om te beoordelen wat voor jou nu handig is en wat niet.

Ben sowieso benieuwd naar het filmpje van de hele opstelling!

If you want to succeed, double your failure rate.

https://youtu.be/6hwfrhgIsh0 het filmpje.

Jochem, ik zal morgen vroeg jou testsoftware proberen.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

Gaaf Fred, wat een mooi uitgedokterde opstelling zo!

Ik zie nog wel een feature voor de software... de draaisnelheid van de stappenmotor bijstellen aan de hand van de vorige "rondetijd" van het spoellichaam. Dan gaat het nog net even wat geleidelijker...

Wat dat betreft blijf ik toch ook nog aansturen op een encoder in plaats van een "vlaggetje". Voor de soepele beweging is dat fijn, en ook voor 'even handmatig' een beetje op of afwinden zonder dat je het ding iets wijs moet maken over de richting.

If you want to succeed, double your failure rate.
Lambiek

Special Member

Ziet er gaaf uit zo Fred. Kun je de stappenmotor die regelt dat de draad netjes naast elkaar komt te liggen niet gewoon langzaam laten draaien, nu laat je hem na iedere omwenteling een aantal stappen maken. Als je microstepping gebruikt kun je hem continue laten draaien, één maal uitrekenen hoe snel dat moet zijn, (hangt van de draad dikte af) en klaar ben je. Moet wel voor iedere draad dikte uitgerekend worden natuurlijk.

Als je haar maar goed zit, GROETEN LAMBIEK.

Fred kan de snelheid van de DC-motor die het spoellichaam ronddraait handmatig bijregelen (gewoon spanning variëren). Aan de hand van een vlaggetje weet je dat hij 1x is rond geweest. Op dat moment doet hij nu het aantal stappen dat nodig is bij een bepaalde draaddikte (instelbaar).

Ik denk dat microstepping zo met die spindel (draadeind) niet eens nodig is, maar ik had wel precies dezelfde gedachte om de beweging wat te "spreiden" in plaats van hem hopsakee alle stappen te laten doen bij het zien van de vlag. Dat kan door de vorige "rondetijd" te meten en die te gebruiken voor een aangepaste stapsnelheid. Als die DC-motor eenmaal draait zal er toch niet heel vaak bijgesteld worden. Of zoals ik zei een encodertje aan de as, gewoon een simpele uit een oude muis ofzo.

If you want to succeed, double your failure rate.
Lambiek

Special Member

Op 12 juli 2016 14:07:58 schreef Jochem:
Als die DC-motor eenmaal draait zal er toch niet heel vaak bijgesteld worden. Of zoals ik zei een encodertje aan de as, gewoon een simpele uit een oude muis ofzo.

Hij zal toch het aantal windingeng op de spoel ook moeten weten, daar gebruikt hij nu het vlaggetje voor waarschijnlijk. Maar dat kan ook met een encoder inderdaad.

Als je haar maar goed zit, GROETEN LAMBIEK.

Zo, hopelijk kan ik vandaag weer verder. Er kwam een spoedklus tussen door. Nu lijkt daar de trafo ook defect te zijn. Die ben ik nu uit elkaar aan het halen.
Die encoder geeft wel een direct voordeel. Terug kunnen wikkelen is zeker erg handig.

De stappenmotor geleidelijker laten stappen is ook een goed idee, dat voorkomt dat de draad net aan de verkeerde kant blijft hangen.

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
Lambiek

Special Member

Op 15 juli 2016 14:15:53 schreef fred101:
Nu lijkt daar de trafo ook defect te zijn. Die ben ik nu uit elkaar aan het halen.

Voordeel is wel dat je hem nu zelf weer kunt her wikkelen. :)

Als je haar maar goed zit, GROETEN LAMBIEK.
EricP

mét CE

Mooie setup, fred. Erg gaaf om te zien hoe jij zonder dat je 'iets' kunt met de materie je informatie bij elkaar harkt, eens wat rondvraagt, met je neus in de goede richting wordt gezet, gaat lopen en dan tot resultaten komt waar vele mensen zelf niet van durven dromen. [certificatie-frustratie-modus]Maar je bent vast nergens in gediplomeerd - wat betrekking heeft op dit soort dingen[certificatie-frustratie-modus]. Alhoewel ik er geen 'werk' voor heb, zou ik wel graag de tijd hebben voor dit soort projecten. Maar ja... tijd...

Zoals reeds eerder opgemerkt (Jochem): je stept nu bij elke ronde. Dat gaat waarschijnlijk best goed, je eerste wikkeling ligt tenslotte ook 'vlak' tegen een stuk plastic aan. Als het draad niet te dun is, dan 'zoekt' het ook z'n eigen weg nog wel een beetje.

Indien wenselijk zou je eea. nog wat kunnen verfijnen. Een manier is om meerdere contacten te maken die pulsen. Als je er 8 per omwenteling maakt, is je 'probleem' al 8x zo klein (en de kans op een 'storing' ook meteen 8x zo groot :) ).
Als je toerental van het spoellichaam redelijk constant is, dan zou je het ook tijd gebaseerd kunnen doen. Iets als: ik moet op 1 puls 100 stappen doen, de tijd tussen 2 pulsen is 700mS, dus elke 7mS een stap. Dat is wat 'knoeien' in code, elke ronde de rondetijd weer corrigeren etc, maar als het werkt, dan werkt het wel simpel en netjes.

Hoe dan ook, als dit eenmaal goed werkt, dan kun je het toerental ook rustig wat opvoeren, dan is een trafo wikkelen echt minutenwerk. Uit elkaar helen en weer monteren wordt 'de klus' dan...

Een regeling die enigszins werkt is zo hard stappen dat je over een seconde weer "bij bent".

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

Ik heb nog wat aangepast. Als stepsnelheid en wikkelsnelheid te hoog zijn mist hij soms detectie van het vlaggetje. Ik heb nu de max stepper RPM snelheid begrensd dmv het map commando tot 100 rpm en dan gaat het prima.

Verder de handbediening aangepast. Hij zet de wikkelmotor stil en zolang ik OK indruk loopt hij in de gewenste richting. Daarnaast heb ik een totaal teller erbij gezet.

Mechanisch heb ik de draad doorvoer nog wat verstevigd omdat bij dikkerdraad de draad dan een paar toeren kan blijven haken doordat de draadgeleider dan meeboog. Een messing geleider er langs loste dit op.

Ik moet ook nog een draaddoorvoer met instelbare frictie toevoegen. Dat is niet zo moeilijk

Ik heb vandaag beide trafo's succesvol gewikkeld en nagemeten.

Uit elkaar helen en weer monteren wordt 'de klus' dan...

Dat is een understatement, wat een monniken werk zijn die E+I kernen om weer te monteren.

Verbeteringen die ik wel in de firmware wil zien is het regelmatige steppen ipv een hoop steps ineens per ronde.

Een mogelijkheid om een stukje terug te wikkelen waarbij hij dan ook terug telt natuurlijk.

Heel wild, misschien dat ik het ook ooit probeer, de draadspanning meten en constant houden bv met een servo. Dan kan die ook als noodstop dienen.

je bent vast nergens in gediplomeerd - wat betrekking heeft op dit soort dingen

Nee, niet echt :-)

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

Misschien leuk om eens door te lezen, ik kwam het op mijn werk tegen in de technische documentatie. Een artikel van Philips uit 1961 over het orthocyclisch wikkelen van spoeltjes. PDF van 15mb:

http://www.filedropper.com/philipstechnischtijdschrift-1961-...nspoeltjes