SemiAutomaticGuitarPickupCoilWinder
(Jussi Kalli ja Marjo Salminen)
Vuoden 2013 loppupuolella käynnistyi Rauman opettajan koulutuslaitoksella mekatroniikan kurssi. Samana syksynä aloitimme pienellä porukalla myös
sähkökitaran valmistuskurssin, jonka opettajana toimii tämän projektin toinen osapuoli, soitinrakentaja Jussi
Kalli.Kitarakurssi oli niin suosittu, että käämittäviä mikkejä tulee olemaan useita kymmeniä. Suuri tarve, sekä loistava tilaisuus testata laitetta suuremmassa mittakaavassa olivat viimeinen naula arkkuun. Jussilla oli jo pitkään muhinut ajatus kehittää apulaite tasalaatuisten mikrofonien valmistukseen, ja nyt kun kaikki taivaankappaleet näyttivät olevan oikeassa asennossa, oli aika toimia.
"Visiona oli jopa että langan syöttöön tulisi automaattinen oskiloiti, jotta lanka kertyisi tasaisesti pakkalle ja vielä ilman ihmisen toimia (aivan kuin virvelikelan puolalle)."
Perinteisesti soitinrakentajat ja alan harrastajat ovat käämineet omavalmisteiset mikrofoninsa mitä erilaisimmilla vekottimilla. Toimintaperiaate pääpiirteittäin laitteissa on ollut pyörivä käämipakka, johon lanka syötetään käsin lankaa edestakaisin liikuttaen. Laitteet ovat yleensä olleet melko yksinkertaisia, mutta myös varsin toimivia.
Jottei homma menisi aivan perinteisesti, pohdimme voisiko koneeseen saada automatiikkaa. Visiona oli jopa että langan syöttöön tulisi automaattinen oskiloiti, jotta lanka kertyisi tasaisesti pakkalle ja vielä ilman ihmisen toimia (aivan kuin virvelikelan puolalle).
Suunnittelun lähtökohtana oli valmistaa kitaran magneettimikrofonien käämintälaite, joka ohjelmoidaan arduinolla. Ajattelimme toteuttaa akselin (pyörittää pakkaa) voimansiirron DC-moottorilla. Lisäksi tarvitsemme voimansiirtoon erilaisia hihnoja ja pyöriä, jolla moottorista saatava voima välitetään oikeanlaisena akselille.
Virtalähteitäkin löytyi jussin verstaalta iso kasa erilaisia 3V---->aina24V asti, joten oikeanlainen varmasti löytyy. LCD-näyttö ja jokin näppis olisivat myös hankintalistalla.
Oskiloivaan liikkeeseen ei vielä ole ratkaisua, mutta eiköhän se matkanvarrella ratkea? Tarkoitus siis liikuttaa langan syöttökohtaa noin 10-15mm edestakaisin, oikealta vasemmalle, ja takaisin. Mahdollisesti tätä tulisi myös pystyä säätämään, sillä jos käämittävän pakan korkeus muuttuu, niin silloin oskilaatiotakin on pystyttävä muuttamaan korkeuden mukaan.
Olisi myös hienoa jos arduinon ohjelmoisi liikuttamaan oskillointia ns. sattumanvaraisesti(jatkuva position arvonta). :D
Näissä ajatuksissa lähdimme viemään työtä eteenpäin.
Projektin eteneminen:
"Jo muutaman palaverin jälkeen homma oli selvä ja lähdimme toteuttamaan jo ennestään melko hyvissä vesissä uivaa projektia. Vaikka monia osia oli jo valmiiksi hankittu, oli kuitenkin vielä paljon hankintoja jäljellä."
Teimme ensimmäisen alustavan luonnoksen koneen perusmekaniikasta. Ohessa alustava luonnos voimansiirrosta ja itse käämintäkoneen rungosta.
![]() | |||
Alustava visio tulevasta koneesta (vertex g4) |
Dc-moottorin pyörimisnopeutta säädetään erillisellä arduino yhteensopivalla moottoriohjaimella, joka toimii PWM(pulssinleveysmodulaatio) periaatteella.
Oskillointi täytyy tapahtua rauhallisesti. Arviomme mukaan optimaalinen käämintä nopeus on noin 500-1000rpm. Näinkin suurissa nopeuksissa oskillointi tapahtuu vielä rauhallisesti.
" Kun mikrofonin käämin kierroslukumäärä on noin 6000-10000kierrosta, niin käämintään kuluu aikaa alle 15min."
Koodin toteutus on vielä auki, mutta kunhan saamme mekaniikan kuntoon, on aika nörtteillä.
Hankkimamme tarvikkeet:
Funduino MEGA 2560
Näyttö 1602A 16 x 2 Lines White Character LCD Module w/ Blue Backlight (DC 5V)
Moottorinohjain
Lisäksi hankittuna kyseinen Servo oskilloinnin toteuttamista varten MG995 Tower Pro Copper Servo Gear for R/C Car / Plane / Helicopter - Black
Rungon prototyyppi
Halusimme testata idean toimivuutta ensin edullisemmalla runkomateriaalilla (polyeteeni).
Runko osoittautui toimivaksi ja riittävän kokoiseksi.
Päätimme valmistaa kaiken itse. Valmistimme voimansiirron hihnapyörät myös polyeteenistä. Jyrsimme pyörät cnc-jyrsimellä ja sorvasimme kuvanmukaisesti pyöriin hihnauran käsityönä.
--------------------------------------------------------------------------------------------------------------------------
Lopullisen koneen valmistus
Kun prototyypillä oli kokeiltu laitteen toimivuutta suunnittelimme, mallinsimme koneesta 3-d mallin. Sitten työstimme kaikki varsinaiset osat CNC-jyrsimellä. Runko materiaalina käytimme kaunista akryylipohjaista AVONITE kauppanimellä myytävää materiaalia, josta tehdään mm. baaritiskejä ja julkisivu koristuksia...
Samaista materiaalia käytimme myös akseliin kiinnitettävien laippojen valmistukseen. Laippoihin kiinnitetään sovitteet, joiden avulla mikrofonit kohdistuvat ja kiinnittyvät oikeille paikoille käämintää varten.
1 Uloin laippa, 2 sovite mikrofonin ylälevylle, 3 mikrononikela,
4 sovite mikrofonin alalevylle, akselin sisä laippa
Kuvan laipoissa näkyvällä pyöristyksellä on kaksi pääasiallista tarkoitusta. Pyöristys sallii ohuelle langalle sujuvan kulun ja estää sen katkeamisen se myös toimii langan syötön ohjurina. Pyöristys kompensoi syötön virheitä ja ohjaa lankaa vaikka oikeaan suuntaan.
Sovitteiden tehtävä on keskittää ja lukita käämittävä mikrofoni oikealle paikalle. Emme halunneet tehdä laippoihin mikronin mentävää taskua, sillä se rajoittaisi kääminnnän yhdenlaisiin mikrononeihin. Erillaiset sovitteet mahdollistavat erilaisten mikrofonien kääminnän.
Osien koneitusta CNC-jyrsimellä.
CNC-jyrsimellä valmistettu
piirilevy piikkiliitosrimoilla.
Juotostyöt tehtynä.
Liitännät takaosassa.
Runko on täysin kiinteä toista kylkeä lukuunottamatta, jonka saa irti 4 ruuvilla.
Laite oli suunniteltava purettavaksi, mahdollisia huoltoja silmällä pitäen. Esimerkiksi hihnavetoa täytyy pystyä kiristämään tai jopa vaihtamaan hihna uuteen. Uuden koodin lataaminen ei kuitenkaan edellytä laitteen purkamista, sillä ohjelmoinnin voi suorittaa takapuolen liitännöistä löytyvän usb portin kautta.
__________________________________________________________________________________
Koodi
Koodin tuottaminen tuntui olevan alussa hankalaa, mutta hyvin monen tunnin jälkeen asia alkoi jo helpottamaan. Lisäksi saimme apua toisen osapuolen ystävältä, jonka kooditaidot olivat rautaisella tasolla.
Koodia pukkaa yön pimeinä tunteina.
Fiilikset katossa, ensimmäinen toimiva koodi.
Monet illat ja yötkin koodin parissa aherrettuamme saimme koodin alla olevaan malliin.
#include <LiquidCrystal.h>
#include <Keypad.h>
const byte hallPin = 2; // Interrupt 0
const byte motorPin = 13; // PWM
int power = 0;
int powershift = 10; // Moottorin tehon säädössä käytettävä prosentti määrä
char key;
byte mode = 0;
boolean print_dialog = true;
volatile int r_count = 0;
unsigned long rpm = 0;
unsigned long totalcount = 0;
unsigned int targetcount = 0;
unsigned long timeold = 0;
String dialog[] = {" Set coil turns"};
String input = "";
// Näytön pinnit
// lcd(RS, Enable, D4, D5, D6, D7)
LiquidCrystal lcd(46, 47, 48, 49, 50, 51);
// Näppäimistö 4x4
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {32, 33, 34, 35}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {28, 29, 30, 31}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
//Serial.begin(9600);
powershift = powershift * 255/100;
// Sensori
pinMode(hallPin, INPUT);
//attachInterrupt(1, addToR, FALLING);
// Moottori
pinMode(motorPin, OUTPUT);
analogWrite(motorPin, 0);
// Set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.print(" Coil King 6600");
delay(3000);
}
void loop(){
delay(100);
key = keypad.getKey();
if ( print_dialog ) {
clearLine(0);
lcd.print(dialog[mode]);
lcd.setCursor(0, 1);
lcd.print(" and press #");
delay(3000);
clearLine(1);
print_dialog = false;
}
if ( mode == 0 ) {
if ( key >= '0' && key <= '9' ){
//Serial.println(key);
//lcd.scrollDisplayRight();
input = input + key;
lcd.print(key);
}
else if (key == '#' && input != "" ) {
mode++;
targetcount = input.toInt();
input = "";
//print_dialog = true;
startWork();
}
}
/*
else if (mode == 1) {
}
else if (mode == 2) {
}
else if (mode == 3) {
}
*/
else { // Työstö
totalcount = totalcount + r_count;
rpm = 60000 * totalcount / ( millis() - timeold ) ;
//timeold = millis();
r_count = 0;
if (totalcount < targetcount) {
//lcd.setCursor(0, 0);
//lcd.print(String("RPM ") + rpm + String(" "));
lcd.setCursor(0, 1);
lcd.print(String("Turns ") + totalcount);
if ( key == '#' ) {
power = power + powershift;
if ( power > 255 )
power = 255;
analogWrite(motorPin, power);
}
else if ( key == '*' ) {
power = power - powershift;
if ( power < 0 )
power = 0;
analogWrite(motorPin, power);
}
else if ( key == '0' ) {
power = 0;
analogWrite(motorPin, power);
}
else if ( key == 'C' ) {
endWork();
}
}
else { // sammuta
endWork();
}
}
}
// Sensorin interrupt laskuri
void addToR() {
r_count++;
}
void clearLine(byte line) {
lcd.setCursor(0, line);
lcd.print(" ");
lcd.setCursor(0, line);
}
void startWork() {
r_count = 0;
totalcount = 0;
power = 0;
analogWrite(motorPin, power);
attachInterrupt(0, addToR, FALLING);
lcd.setCursor(0, 0);
lcd.print("-* 0/C #+");
clearLine(1);
timeold = millis();
}
void endWork() {
detachInterrupt(0);
//targetcount = 0;
power = 0;
analogWrite(motorPin, power);
lcd.clear();
mode = 0;
print_dialog = true;
}
__________________________________________________________________________________
Yhteenvetoa koeajoa ja tunnelmoitia
Fiilistelyä.
https://www.youtube.com/watch?v=LpI2fKLOKjA
__________________________________________________________________________________
Laitteen käyttö ja toiminta
Laitteelle syötetään haluttu kierrosmäärä näppäimistön avulla. Syötetyt numerot näkyvät näytöllä kunnes käyttäjä hyväksyy lukeman painamalla "*"näppäintä. Kun lukema on hyväksytty, käyttäjä voi aloittaa kääminnän painamalla "#"näppäintä. Moottorin teho nousee jokaisella "#"näppäimen painalluksella 15%. Nopeutta voidaan laskea painamalla taas "*"näppäintä kunnes haluttu nopeus on saavutettu.
Käämintä voidaan pysäyttää pause toiminnolla painamalla "0"näppäintä, jolloin moottorin teho katoaa ja kierroslukema pysähtyy. Käämintää voidaan jatkaa taas kiihdyttämällä haluttuun nopeuteen ja kierroslukema jatkaa taas siitä mihin on viimeksi jääty.
Ohjelma alkaa alusta kun syötetty kokonaiskierrosluku on saavutettu. Ohjelma on mahdollista myös resetoida kesken ohjelman painamalla "c"näppäintä, jolloin ohjelma alkaa alusta ja voidaan syöttää taas haluttu luku.
Arduino havaitsee akselin kierrosluvun hall-sensorin avulla, sillä akseliin on kiinnitetty magneetti. Joka kerta kun magneetti pyörähtää akselin mukana se sivuttaa sensorin ja näin havaitaan jokainen kierros.
_________________________________________________________________________________
Projekti jatkuu
Projekti ja blogi jatkuu kun kitarakurssi jatkuu taas syksyllä 2014. Tuolloin testaamme käämintäkonetta tositoimissa ja julkaisemme tulokset blogissa.
Tarkoituksena kehittää edelleen koneen mekaniikkaa ja koodia. Luvassa ainakin automaattinen käämilangan syöttö.
Tarkoituksena kehittää edelleen koneen mekaniikkaa ja koodia. Luvassa ainakin automaattinen käämilangan syöttö.
Great winder , Is it posible get the wire plan ,And the dwg ore so for cnc cut it
VastaaPoista