Forum: Mikrocontroller und Digitale Elektronik Mega 2561 und Heliostat-Projekt


von wlodek krochmat (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Ihr Lieben,

auf der Suche nach info zu der Möglichkeiten von ATMEL Microcontrollern
fand ich in dieses Forum.
Ich hoffe hier eine Gruppe versierter Kenner gefunden zu haben.

Ich möchte die unbefangene Meinung zu einem Microcontrollereinheit mit
Atmel2561 zu holen.
(eine 126 Version mit der mögichkeit auf 256 Update habe ich
hier´gefunden:
http://www.shop.display3000.com/pd1140349844.htm?categoryId=1)

Aber erst die Hintergrunde:
Ich habe vor, einen Heliostat zu bauen. (Sonnennachführungsystem)
Die Anlage besteht aus einem Rotor der mit 2 Schrittmotoren, Elevation
und Horizont, die Sonnenposition nachführt und die Strahlen auf eine
freiprogramierte Stelle mittels eines Spiegels lenkt.
Um den Rotor zu Steuern brauche ich eine Kontrollereinheit die einige
Berechnungen ausführt:
1-- Zeit und Datum aus interner Uhr auslesen und in Universalzeit
umsetzen.
2-- die Geopositiondaten eingeben lässt.
3-- Sonnenposition mit o.g. Daten 3mal pro Minute berechnet (die
Berechnungsrutinen unten)
4-- den nötigen Umlenkungswinkel in gleichen Zeitintervall berechnet
(Imput soll manuell enstellbar sein mit up, down, links und rechts
Tasten) und die Motoren des Rotors steuern diese Funktion dient auch
der mannuellen Bewegung des Spiegels.
5-- Vorprogramierung der Betriebszeit ermöglicht.(zB von 9:00-18:00
Uhr)
6-- Windgeswindigkeit mißt und bei zu starkem Wind den Spiegel in die
höhste Elevationsposition fährt.
7-- ausser betrisbszeit gleich wie p.6

meine Fragen:

1- Schafft das der Atmel Mega 2561 in der o.g. Ausführung, oder ist das
für den Prozessor zu komplex?
2- Wie soll ich die ganze Umgebung gestallten? (Periferiemodule usw.)
3- wie könnte den der Quellcode in Bascom aussehen? (habe leider keine
Erfahrung mit Bascom).

Für Eure Meinung und Hilfe danke ich im Voraus.

W.Krochmat
(woodoo)

Hier die Daten die der Rotor benötigt:
01. Elevationspositionserkennung (Impuls A -Phase)
02. Elevationspositionserkennung (Impuls B - Phase)
03. Eingang für Azimutpositionserkennung (Impuls A -Phase)
04. Eingang für Azimutpositionserkennung (Impuls B -Phase)
05. Eingang Erkennung Elevationsgrundstellung
06. Eingang Erkennung Azimutgrundstellung
07. Masseklemme für Elevation u. Azimut Grundstellungserkennung
08. Masseklemme für Elevation u. Azimut Grundstellungserkennung
09. + Ausgangsklemme für Encoderversorgung im Rotor (Impulse A/B 24V
DC)
10.  - Ausgangsklemme für Encoderversorgung im Rotor (Impulse A/B 24V
DC)
11. +  24V DC Ausgangsklemme für Elevationsmotorspannungsversorgung
12.  -  24V DC Ausgangsklemme für Elevationsmotorspannungsversorgung
13.  + 24V DC Ausgangsklemme für Azimutmotorspannungsversorgung
14.  -  24V DC Ausgangsklemme für Azimutmotorspannungsversorgung

und die Berechnung der Sonnenposition in Delphi (leider keine C oder
Bascom quellcode) um die komplexität zu zeigen. die restlichen
Berechnungen und Rutinen sollen relativ einfach sein.

Das Programm tut eigentlich nichts weiter als phi, lambda und JD
einzulesen, die Formeln der Reihe nach abzuarbeiten und das Ergebnis
jedes Schritts in einem Textfeld auszugeben (S. Anhang)

von Sonic (Gast)


Lesenswert?

Der Mega2561 ist da mit sicherheit nicht überfordert, hat jede Menge
Ports und Schnittstellen. Wenn's um reine Dateneingabe (per serieller
Schnittstelle) geht ist das auch kein Problem. Schnell sind die Teile
ja und Berechnungen sind auch kein Problem. Was evtl. hilfreich wäre
ist die genaue Uhrzeit per DCF77-Antenne, oder besser noch ein
GPS-Empfangsmodul (WGS84), dann ist die eigene Position (wird ja auch
gebraucht) und die genaue Uhrzeit schon zum Rechnen drin.Zur
Ansteuerung der Schrittmotoren würde ich eigene Steuerungen z.B. mit
dem tiny2313 machen.
Ich programmiere allerdins in C und will mich mit BASIC nicht mehr
beschäftigen, deshalb kann ich hier nicht weiterhelfen.

von Peter D. (peda)


Lesenswert?

Der ATmega2561 ist dafür total oversized, ein ATMega16 sollte dicke
reichen.

Warum willst Du Basic nehmen, wenn Du damit keine Erfahrungen hast ?
Hat Bascom überhaupt ne double Library ?

Du solltest C nehmen, da findest Du die meisten Programmbeispiele.
Allerdings hat der AVR-GCC keine double Library.
Du müßtest also mal prüfen, ob double überhaupt nötig ist.


Peter

von wlodek krochmat (Gast)


Lesenswert?

1-double ist absolut erforderlich sonst der Fehler berägt über 1°
2-in der Hilfe von Bascom habe ich das gefunden:

The double.lbx (lib) is written by Josef Franz Vögel. The library
supports the basic operations :
Addition (+)
Substraction (-)
Multiplication (*)
Division (/)
Val() , INPUT
Str() , PRINT
Int()
Frac()
Fix()
Round()
Conversion from double to single and long
Conversion from single and long to double

The double library uses special Mega instructions not available in all
AVR chips. But as the old chips are not manufactured anymore, this
should not be a problem.
All Trig() functions are supported by the double too!

ich schwöre nicht auf Bsic, die Möglichkeit bitet sich na weil zu dem
Modul gibt es Diesen Compiler als Bundle. in c bin ich auch auf Hilfe
angewiesen.

Gruß
woodoo

von wlodek krochmat (Gast)


Lesenswert?

Das der Mega 256 Überdimensioniert ist  gibt mir die weitere Möglichkeit
die Anlage zu Erweitern z.B. mehrere Rotoren zu lenken, ausgefalene
Bildschirmausgabe usw.

es ist wirklich vielseitiges Thema. Ich bin gespannt wie sich es hier
entwickelt? Quellcodes usw.

Gruß
woodoo

von grmbl (Gast)


Lesenswert?

Ganz ehrliche Meinung? Völlig unbefangen?

Du wirst von den Features des Mega-256 erschlagen werden. Warum nur
nehmen gerade Anfänger immer das Topmodell für ihre ersten Schritte?
Glaub mir, es ist einfacher, zwei Controller einzusetzen (einen für den
Heliostaten und einen weiteren für ein Display) als alles in einen
überdimensionierten Controller reinzustecken.
Wenn man z.B. per I²C oder per SPI die Ports erweitert, reicht für so
eine Aufgabe schon ein Mega-8, und der dreht noch Däumchen.

von wlodek krochmat (Gast)


Lesenswert?

Ich habe deshalb hier gepostet weil mir alle gefragten Händler nach
Analyse des Projekts eben den Mega empfohlen haben. Ich möchte eine
Lösung erreichen die mir erlaubt weit vorkonfektionierte Komponenten zu
verwenden um nicht noch zusätzlich viel löten zu müssen. Ich habe ,
meine ich, ziemlich alles beschrieben um den Umfang des Projektes zu
erläutern. mir ginge eher um Antworten die konkrett beschreiben was und
warum. Mich stört es nicht, dass der Prozessor "zu mächtig" sei. Ich
bin sogar froh darüber, weil es bestätigt das, was die Händler sagen.
Auserdem möchte ich hier keine Emotionaldiskussionen anfangen.

von Läubi (Gast)


Lesenswert?

ja willst du das teil jezt bauen oder sollen wir das für dich tun...
wenn alles so klar ist würfe ich doch mal sagan: ran ans werk...

von Peter D. (peda)


Lesenswert?

"Mich stört es nicht, dass der Prozessor "zu mächtig" sei."

Das kann durchaus stören.

Bis zum Mega64 hast Du linearen Adreßraum für Daten und Code.

Ab dem Mega128 brauchst Du aber erweiterte Adressen für konstante Daten
und ab dem Mega256 erweiterte Codeadressen.

Wenn Dein Compiler / Basic das nicht unterstützt, stehst Du dumm da.
Außerdem werden die Programme dadurch auch etwas langsamer.


Peter

von wlodek krochmat (Gast)


Lesenswert?

habe ich hier Jemanden beleidigt? oder werden hier ale Grünschnabel erst
mal Kaffe kochen geschickt.

von wlodek krochmat (Gast)


Lesenswert?

Hallo Peter,
danke für die Anregung, heisst das, dass der AVR BASCOM-Compiler schaft
die Adressierung des 256'er nicht? der Verkäufer von dem o.g.Teil hat
mir eben ein Upgrade von 128 auf 256 als einfache Speichervergrößerung
empfohlen.

und wenn du den Quelkode siehst meinst du, dass der "kleinere"(128)
besser für den Zweck geegnet ist?
Gruß
woodoo

von Peter D. (peda)


Lesenswert?

Weiß ich nicht.
Ich benutze kein Bascom und keinen Mega128 oder größer.

Schau doch mal in der Doku von Bascom nach, welche AVR-Typen
unterstützt werden.


Peter

von wlodek krochmat (Gast)


Lesenswert?

Hallo grmbl,

"Du wirst von den Features des Mega-256 erschlagen werden. Warum nur
nehmen gerade Anfänger immer das Topmodell für ihre ersten Schritte?"

erst mal das zweite Teil deiner Frage: Für alle Anfänger kann ich nicht
sprechen. In meinem Fall gibt es einige Faktoren:
1.- aus Mangel an Erfahrung muss ich mich belehren lassen.
die Meisten die ich gefragt habe, fangen mit der Frage an, was ich
damit machen will? dann, ob es ausbaubar sein soll, weiter, wie hoch
der Aufwand der Konfektionierung von Hardware sein soll? und zu letzt,
wie teuer soll es sein. Dann folgt die Argumentierung, dass im Falle
des Erreichens der Möglichketsgrenzen die Erweiterung der Anlage wird
teurer und kompliziert.
2.-Die Losungen für dieses Thema, auf die ich im Netz gestossen habe
setzen als Rechenzentrum einen PC an, der externe Relais mit RS232
steuert.
3.- die Losung 2 ist zu teuer.
4.- ich habe mich, leider sehe P1.- überzeugen lassen und das oben
geschriebene Modul gekauft.
jetzt habe ich die Kröte und suche nach Rat und Hilfe wie ich damit
mein Projekt doch realisieren kann.

Gruß
woodoo

von A.K. (Gast)


Lesenswert?

"Bis zum Mega64 hast Du linearen Adreßraum für Daten und Code."

Leider zwei davon (drei mit EEPROM), egal welcher AVR.

Ist zumindest bei WINAVR mit bis zu knapp 64KB an Flash-Daten kein
Problem, oder jedenfalls nicht schlimmer als sonst. Der plaziert die
Daten gnädigerweise vorneweg in den Speicher.

Und da die Mega256x-Version vom GCC alle Entry-Points in den ersten
64KW (128KB) hält, ist auch das kein Problem.

Bleib der Ärger mit den Tools. Die 256er sind noch so warm, dass sie
bisweilen noch nicht "out of the box" unterstützt werden.

von wlodek krochmat (Gast)


Lesenswert?

hallo A.K.
heisst es, das ich den 256 verwenden kann quasi als op er 16 wäre?
(Falls ein 16'er die Rechenleistung, die ich brauche, liefert)

von A.K. (Gast)


Lesenswert?

Da du BASCOM verwendest, musst du dort fragen. Grundsätzlich muss die
Programmierumgebung den Typ kennen, sonst wird das garantiert nichts.

Ich bezog mich auf den Beitrag von Peter Dannegger, der den Mega256 in
die Nähe gebankter 8051-er rückte. Was nicht der Fall ist, der Mega256
ist genau linear wie der Mega64 oder Mega128.

von A.K. (Gast)


Lesenswert?

PS: ...ist bis 64KB Flash-Daten genauso linear... Darüber wird's
hässlich. Aber wer solche Datenmengen anpeilt, sollte sich überlegen,
ob er bei AVRs nicht ohnehin falsch ist.

von wlodek krochmat (Gast)


Lesenswert?

ich habe den 256 leider schon gekauft s. frühere post
und jetzt suche ich nach Rat wie ich weitere Deteils des Projektes
"anbeise"

von wlodek krochmat (Gast)


Lesenswert?

gibt es einen erprobten Tool der Pascal für ATMega 256 compiliert?

von HomerS (Gast)


Lesenswert?

Ach Du lieber Gott, nimm das Ding und fummel rum bis es geht.
Sowas gab es doch schon in den siebzigern(oder warens die achtziger?)
in billigster Hardware. Ich wundere mich manchmal wie unsicher die
Leute hier an Projekte rangehen.

Wenn Du die analoge Variante sehen willst, sag bescheid.



diesmal ohne Äppler


ts

von Mega256xFan (Gast)


Lesenswert?

Leute, steigt um auf Assembler, dann wird auch ein Mega2561 zu einer
problemlos programmierbaren Angelegenheit...

von wlodek krochmat (Gast)


Lesenswert?

Hallo ts,
"
Wenn Du die analoge Variante sehen willst, sag bescheid"
-klar will ich sie sehen

von wlodek krochmat (Gast)


Lesenswert?

Hallo 256xFan,

Kannst du mir sagen wie es mit der Berechnung (s Anhand oben) im
Assembler geht?

von Mega256xFan (Gast)


Lesenswert?

Na ja, a bisserl Mühe ist da schon notwendig, die wird einem sicher
niemand abnehmen! Mit ein wenig Erfahrung und den vielen Beispielcodes
im Netz macht der 256x schon einiges möglich, kompakt, schnell und
preiswert.

von woodoo (Gast)


Lesenswert?

keine Anregungen, keine Ideen????

Hallo HomerS,
"Sowas gab es doch schon in den siebzigern(oder warens die
achtziger?)
in billigster Hardware."

kannst du etwas genauer sagen?

von Sekoya A. (sekoya)


Lesenswert?

hi,
@ krochmat

ich werde auch was ähnlich machen, ich verwende C8051 ,
kannst du vielleicht dein complett projekt posten?
danke,

von ahem (Gast)


Lesenswert?

Was wollt ihr denn da so viel rechnen. Wenn die Drehachse bekannt ist, 
und die aendert nun nicht jeden Tag, so sind es nur noch 15 Grad pro 
Stunde. Sonst noch was ?

von Axel (Gast)


Lesenswert?

so geht es am einfachsten:

http://www.heliostat.us



Axel

von daniel (Gast)


Lesenswert?

also mal im ernst. Du übertreibst es mit dem mega 2561 wirklich. Allein 
wenn du dir anguckst, wie viel code du schreiben musst um überhaupt 
einen mega 32 mal voll zu kriegen....da is der mega2561 voll drüber... 
aber das weisst du sicher selbst. Und wenn du einen mega 32 nehmen 
würdest, was meiner ansicht nach kommplett für diesen zweck ausreiche n 
würde(40 pins), würdest du sogar noch das problem mit der unterbringung 
von 100 pins umgehen.

denk mal nach:

display 4-bit modus (7/8 leitungen)
dann deine motoren (angenommen du nimmst 2) 6/4 pins

da bleiben dann immer noch genug leitungen frei, und an seine grenzen 
bringst du mit diesen aufgaben einen mega 32 nicht im entferntesten. Das 
würde sogar ein mega 8 schaffen (wobei der zuwenig pins dafür hat und 
8kb flash, weiss ich nich ob du ein programm, oder einen roman schreiben 
willst ^^)

Daniel

von P. S. (Gast)


Lesenswert?

daniel schrieb:

> denk mal nach:

Oder noch besser: Guck mal auf's Datum.

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.