Forum: Mikrocontroller und Digitale Elektronik Wer kann kann mir ein Prpgrammschreiben?


von Johannes S. (schmidgen)


Lesenswert?

Hi,
ich möchte mir eine Microschritt Steuerung für Schrittmotoren bauen.
Hierzu benötige ich einen Chip (zB. ATTiny), der verschiedene Sinus und 
Cosinuswerte nach einer Tabelle ausgibt. Statt mehrerer Ausgänge (z.B. 4 
Bit) soll ein PWM Signal ausgegeben werden, die in der Steuerung in 
analoge Signale umgewandelt werden. Da ich keine Ahnung von 
Microcontrollern habe möchte ich fragen, ob mir jemand sowas 
programmieren kann.
Gruß
Johannes

von ARM-Fan (Gast)


Lesenswert?

Da wirst du zu 99% niemanden finden, der dir das einfach so macht.

Aber Gegenvorschlag: Was hälst du von einer "fertigen" Lösung.
Schau dir mal von Trinamic die Chips TMC428 und TMC236 an.

Die bilden zusammen eine schöne Mikroschrittsteuerung, die über
SPI angesteuert wird.

von Knopfloch (Gast)


Lesenswert?

Poste doch bitte mal Deine email adresse, dann schreibe ich Dir.

Gruss
Knopfloch

von Axel R. (Gast)


Lesenswert?

Wieviele PWM-Ausgänge brauchts denn?
Ist die auszugebende Freq. konstant? Wenn nein, wie soll diese 
vorgegeben werden? (Drehencoder, UART, I2C,SPI?)

von Axel R. (Gast)


Lesenswert?

@Knopfloch
Seine mailadresse steht indirekt oben mit bei...

@ Johannes
Du hast Post

von Johannes S. (schmidgen)


Lesenswert?

Die PWM Frequenmz ist immer gleich. Nur das Puls/Pause Verhältniss ist 
entsprechen den Sinus/Cosinus Werten. Vier oder 5 Bit Auflösung genügen.
Da es sich um ein privates Projeklt handelt, sollte das Programm nicht 
zu teuer sein. Wenn es zuviel Aufwand macht muss ich es lassen. Die 
Trinamicsteuerung isrt mir zu kompliziert. Ich verwende die 
Takt/Richtungs Ausgänge von der LPT Schnittstelle.
Gruß
Johannes
office@schmidgen.de

von Axel R. (Gast)


Lesenswert?

@Johannes

Schon klar, das die PWM sich nicht ändern soll, sondern möglichst hoch 
anzusetzen ist.

Es geht um den erzeugten SINUS/COSINUS.
Soll die generierte Frequenz veränderlich sein?
Wenn ja, wie (I2C,UART,SPI,Analog via ADC, Parallel oder 
Drehencoder?)und in welchem Umfang?

Du benötigst sicher einen Ausgang, der den Sinus und einen zweiten 
Ausgang, welcher den Cosinus erzeugt?

Oder benötigst Du zwei oder mehrere Ausgänge für unterschiedliche 
Frequenz(paare[sin/cos])?

Etwas genauere Angaben, wofür und warum wären nicht schlecht.

Ist zwar keine Raketentechnik, aber so einfach aus dem Ärmel schüttelt 
sich das nun auch wieder nicht.
Und wenn dann alles fertig und es dann nicht passt, weil irgentwelche 
Angaben fehlten oder es missverständnisse gab, fängt man von vorne an.

Und genau hier liegt der Grund, warum sich so wenige melden, die das 
gegen Bezahlung machne wollen.
Ich weiss, es sind einige viele hier von der Partie, die das könn(t)en.
Ja  - auch ich zähle mich dazu.

So eine Softwareentwicklung bietet allerdings aus o.g. Gründen immer 
wieder großes Konfliktpotezial. Daher ist eine genaue Spezifikation, 
also ein Aufsatz, in dem GENAU beschrieben steht, was GENAU zu tun ist, 
vorab unabdingbar.

Etweder man sich quasi "sinnfrei" stur an die Arbeit und arbeitet dieses 
Lastenheft ab, oder man hat die komplette Applikation auf dem Tisch und 
kann evtuell unglücklich formulierte Merkmale korrrigieren.

Daher mein Rat:

stell etweder per PN demjenigen die Gesamtapplikation oder nur ein 
Lasteheft mit konkreten Angaben zur Verfügung, ODER stell dein privates 
Projekt hier im Forum zur Diskussion.
Kann ja auch gut sein, das schon ein jemand sich an die gleiche Sache 
machen wollte, aber auch stecken blieb, weil ihm das Wissen auf dem 
einen oder anderen Gebiet fehlt(e).

Also Fazit:
 - etweder gegen Bezahlung mit GENAUEN Eckdaten
 - gegen Bezahlung inklusive Beratung
 - ohne Bezahlung in Form von Hilfestellung hier im Forum

Was sagen die anderen?

Viele Grüße

Axelr.

die paar Rechtschreibfehler lass ich mal drinn :-))

von Karl H. (kbuchegg)


Lesenswert?

Axel Rühl wrote:

> Was sagen die anderen?

Sehe ich auch so.
Die bisherige Projektbeschreibung ist mir noch zu schwammig
als das ich dafür auch nur Vorschläge machen könnte.

Im Moment klingt es nach 3 Timern.
2 für die beiden PWM und mit einem dritten
wird die Sin/Cos Tabelle abgearbeitet und die
jeweiligen Werte den PWM-Timern zugeführt.

Aber wir alle wissen: Der Teufel steckt im Detail und
es sind immer diese anfangs vergessenen 'Kleinigkeiten'
die einem letztendlich das Genick brechen.

von Axel R. (Gast)


Lesenswert?

Wenn Johannes nicht weiss, was er mit "PN" anfangen soll:

neben meinem (und auch bei den anderen) Namen

*****
Autor: Axel Rühl (axelr) <--- hier
Datum: 07.03.2008 19:41
*****

kann man draufklicken und dem (angemeldeten) User eine Private Nachricht 
(PN) schicken.

axel punkt ruehl ätt gmx punkt de

von Johannes S. (schmidgen)


Angehängte Dateien:

Lesenswert?

Ein Freund von mir, der zur Zeit leider nicht zur Verfügung steht, hat 
mir mal den im Bild dargestellten Chip gebrannt. Er hat Step/Dir 
Eingänge, Wahl der Microschrittauflösung, Vorzeichen für Sin/Cos und 
Binäte Ausgänge zur Ausgabe. Statt dieser Ausgänge hätte ich gerne PWM 
Signale mit ca 100 Khz und variablem Puls/ Pause Verhältnis.
Ich denke dass die Erklärung reicht.
Gruß
Johannes

von Gast (Gast)


Lesenswert?

Zusätzlich zum Gesagten wäre erst einmal eine Schaltung aufzubauen, die 
programmiert werden kann. Ein Tiny wird für die Aufgabe unter Umständen 
nicht reichen.

Mein Vorschlag wäre ein Schrittmotortreiber von Allegro wie A3972 und 
ein Mega8. PWM-Generierung wäre nicht notwendig.

von Axel R. (Gast)


Lesenswert?

>...Er hat Step/Dir Eingänge, Wahl der Microschrittauflösung, Vorzeichen für > 
Sin/Cos und...

Ist also schon etwas leicht anderes, als einen DDS zu programmieren ;-))

Passt aber locker in einen Tiny, wenn man sich eine andere Art der 
Eingabe überlegt. 16 Stufen lassen sich ja noch mitm ADC und Poti 
machen.
(könnte man, drehencoder ginge auch)

Ist aber letzen Endes tatsächlich nichts anderes, als eine 
Schrittmotorlogik.
Die gibt es tatsächlich für ein paar Euro von Trinamic bei Reichelt.
Das Stromchopperdingens ist dann dort wohl auch schon bei.

EDIT
auf dem Bild war bei mir nichts zu erkennen, schade.
Wenn das tatsächlich alles ist, baue ich Dir so ein Teil für 300Euro.

von Johannes S. (schmidgen)


Angehängte Dateien:

Lesenswert?

Ich habe hier nochmal das Bild etwas schärfer.,
Gruß
Johannes

von Knopfloch (Gast)


Lesenswert?

@Axel:

>Seine mailadresse steht indirekt oben mit bei...

Nichts für ungut. Das soll jetzt wirklich ganz freundlich und höflich 
gefragt sein:
Was würde mir Deine Antwort nützen. Die email-Adresse kann ich daraus 
nicht ableiten. Oder übersehe ich da was?

Aber wiegesagt. Nichts für ungut. Würde mich bloss mal interessieren, 
wie Du das gemeint hast.

Gruss
Knopfloch

von Hannes L. (hannes)


Lesenswert?

Knopfloch wrote:
> @Axel:
>
>>Seine mailadresse steht indirekt oben mit bei...
>
> Nichts für ungut. Das soll jetzt wirklich ganz freundlich und höflich
> gefragt sein:
> Was würde mir Deine Antwort nützen. Die email-Adresse kann ich daraus
> nicht ableiten. Oder übersehe ich da was?
>
> Aber wiegesagt. Nichts für ungut. Würde mich bloss mal interessieren,
> wie Du das gemeint hast.
>
> Gruss
> Knopfloch

Ist das soooooo schwer?
Logge Dich im Forum ein, dann kannst Du durch einen Klick auf den Namen 
eines anderen eingeloggten Benutzers zum Kontaktformular, über das Du 
ihm eine persönliche Nachricht schicken kannst. Diese Nachricht enthält 
als Replay to Deine Mailadresse, mit der Du Dich eingeloggt hast. Daher 
könnt Ihr anschließend direkt, also ohne das Forum, weiter 
kommunizieren.

...

von Hannes L. (hannes)


Lesenswert?

Achja, das Einloggen in diesem Forum kostet nichts, Du wirst auch nicht 
mit Spam zugemüllt und hast auch keine anderen Nachteile. Und falls Du 
Angst hast, es könnte jemand ein Profil von Dir (und dem, was Du 
schreibst) erstellen, dann hast Du ja immer noch die Möglichkeit, Dich 
wieder auszuloggen und anonym zu schreiben, wie es viele andere 
Feiglinge hier tun.

...

von Entwickler (Gast)


Lesenswert?

Hm. Feigling. Soso. Ne, mir wurde mein Passwort gestohlen.

von Johannes S. (schmidgen)


Lesenswert?

Können wir jetzt wieder sachlich werden?
Johannes

von Axel R. (Gast)


Lesenswert?

Brauchst Du SIGN_SIN und SIGN_COS für das "Analogteil"?

Passt sonst tatsächlich nicht auf'n Tiny. Hatte hier noch ein paar 
Tiny24 liegen. Die SW läuft schon fast, aber ich habe eben nur 5Pins 
insgesamt.
1 - CLK_in
2 - DIR_in
3 - SIN out
4 - COS out
5 - ADC_in (Schrittweite über Poti einstellbar)
6 - RESET
7 - MASSE
8 - VCC

von Johannes S. (schmidgen)


Angehängte Dateien:

Lesenswert?

Ja, die Vorzeichen brauche ich, da ja nur positive Halbwellen 
dargestellt werden. Ich habe mal das Oszillogramm hochgeladen. Eine 
Einstellung über Poti ist eigentlich nicht notwending. Wichtig ist nur, 
das der Duty Cycle beim Wert 00000 = 0% ist und bei 11111 = 100% (Kann 
auch weniger sein)ist.
Das Programm der bisherigen Ausführung habe ich. Wäre es möglich es 
einfach weiter zu entwickeln? Das heisst parallel out in PWM zu ändern?
Gruß
Johannes

von Johannes S. (schmidgen)


Angehängte Dateien:

Lesenswert?

Ich habe noch die verwendete Sinus/Cosinus Tabelle gefunden.
Johannes

von Axel R. (Gast)


Lesenswert?

Johannes Schmidgen wrote:
>... Das heisst parallel out in PWM zu ändern?

Nicht mitm Mega8@8Mhz. Da ist die PWM nicht schnell genug.

Das bestehende Programm zu ändern ist für jemanden, der etwas Bescheid 
weis (wie viele hier) kein Problem. Aber du brauchst mindestens die 
10-fache PWM Frequenz, damit das Ergebnis "gut" aussieht, denke ich mal. 
Das schafft der Mega8 eigentlich nicht (ist er nicht für gemacht)
Ich bin jetzt nicht im Bild, ob es die "großen" AVR's mit HIghSpeed PWM 
gibt.
Gibt es?

EDIT:

warum lässt Du nicht alles so, wie es ist?? Scheint doch zu 
funktionieren?
Wenn Du das Programm hast, kann ich Dir (d)einen Mega8 damit 
programmieren.
Evtl. hift das ja schon ;-))

von Axel R. (Gast)


Lesenswert?

Johannes Schmidgen wrote:
> Ich habe noch die verwendete Sinus/Cosinus Tabelle gefunden.
> Johannes

Nett, wäre aber nicht nötig gewesen.
Trotzdem danke.

von Axel R. (Gast)


Lesenswert?


von Johannes S. (schmidgen)


Lesenswert?

Ich denke, dass eine PWM Frequenz von ca 100Khz ausreicht. Ist ja kein 
HiFi Verstärker. Die maximale Frequenz der CNC Software ist ca 40Khz. 
Die feinste Microschrittauflösung dient sowieso nicht für Speed. Hier 
geht es nur um die Wiederholgenauigkeit. Für meine kleine Fräse werde 
ich 5tel, 10tel oder max 25tel verwenden.
Gruß´
Johannes

von Johannes S. (schmidgen)


Lesenswert?

Bei dieser Gelegenheit möchte ich mich dafür bedanken, dass sich einige 
Leute meines Problems annehmen. Aufgrund meines schmalen Budgets sind 
max 100 Euro drin. Wenn es mehr wird, muss ich es lassen.
Gruß
Johannes

von Axel R. (Gast)


Lesenswert?

Der Mega8 schafft bei 8Mhz internem Oszillator 31,250KHz PWM Frequenz.
Der og. Typ(Attiny861) kann den TImer mit 64Mhz takten, sodassss 250Khz 
ohne Probleme möglich wären.
Kann ich aber nicht testen, habe keinen Tiny861 hier.

EDIT schade

von Johannes S. (schmidgen)


Lesenswert?

Hallo Axel,
könnte man den ATmega nicht mit Quartz betreiben? 60Khz würde ja schon 
knapp reichen.
Gruß
Johannes

von Axel R. (Gast)


Lesenswert?

Johannes Schmidgen wrote:
> Hallo Axel,
> könnte man den ATmega nicht mit Quartz betreiben? 60Khz würde ja schon
> knapp reichen.
> Gruß
> Johannes

Sicher...

von Axel R. (Gast)


Lesenswert?


von Gast (Gast)


Lesenswert?

>Die maximale Frequenz der CNC Software ist ca 40Khz.

Davon war bislang keine Rede. Oder habe ich etwas nicht mitbekommen?

von Axel R. (Gast)


Lesenswert?

Gast wrote:
>>Die maximale Frequenz der CNC Software ist ca 40Khz.
>
> Davon war bislang keine Rede. Oder habe ich etwas nicht mitbekommen?

War doch (fast) klar.
Ich dachte anfangs, es sei für einen Plattenspielerantrieb ;-)

von Johannes S. (schmidgen)


Lesenswert?

Um Missverständnisse zu vermeiden. Es geht hier nicht um die CNC 
Software. Die habe ich bereits. Es geht nur um die Motoransteuerung.
Johannes

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.