Mehrfache Programmeinträge im Kontexmenü unter Mac OS Mountain Lion

Ich hatte in letzter Zeit einige Programme im Kontextmenü doppelt und dreifach. Die Frage war wie man die da wieder heraus bekommt. Ein wenig gegoogelt und das Netz sagt, dass man die Launch Services zurücksetzen soll. Einige Tipps aber im Netz funktionierten unter 10.8 nicht.
Mit dem folgenden Befehl im Terminal jedoch kann man auch die Launch Services unter 10.8 zurück setzen:

/System/Library/Frameworks/CoreServices.framework/Frameworks/
LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

Gehört natürlich in eine Zeile, Zeilenumbruch hab ich nur für die Lesbarkeit eingefügt.

Veröffentlicht unter Allgemeines | Verschlagwortet mit | Hinterlasse einen Kommentar

Operationsverstärker OPA 380 für MI-Sugar

Nachdem ich weiterhin ein wenig simulierte gibts heute den oben genannten OPV für MI-Sugar. Das Model wurde von Texas Instruments herunter geladen und für MI-Sugar angepasst. Viel Spass damit.

OPA als Photodiodenverstärker

TIA mit OPA380

Download Subcircuit OPA380

Veröffentlicht unter MI-Sugar | Hinterlasse einen Kommentar

Operationsverstärker AD820 für Mi-Sugar

Nachdem ich ein wenig mit Photodioden spielen durfte und mich für die Auswertung der selben für einen Transimpedanzwandler entschieden habe, habe ich ein Model dafür für Mi-Sugar angepasst. Dieses Model kann hier herunter geladen werden. Es kommt hierbei das Model von Analog Devices selbst welches ich über Google fand.

Zum Einbinden des Subcircuits muss lediglich das Model in den Subcircuit-Ordner verschoben werden und dann müsst ihr testen. Es ist nämlich durchaus möglich, dass die Pinbelegung bei euch nicht mehr stimmt und deshalb der OP erstmal scheinbar nicht bzw. nicht richtig funktioniert. Als Symbol hab ich das Beispiel des OP-AMP aus der Hilfe genommen (kopieren und als .xml-Datei sichern)

AD820 als Transimpedanzwandler

Transimpedanzwandler

Download AD820

Veröffentlicht unter MI-Sugar | Hinterlasse einen Kommentar

Möhren frieren nicht

So als hauptberuflicher Elektronenschubser kommen einem beim Reiten ja die merkwürdigsten Ideen. Letzten Dezember zum Beispiel fand ich es sehr unschön, dass der Sonnenschein die Möhren erstmal warmlutschen musste bevor sie genossen werden konnten. Da ich daheim zwei formschicke Laminatoren rumstehen hatte, von denen ich nur einen brauchte hab ich kurzerhand einen Blick in die heimische Bastelkiste geworfen und eine Spind-Möhren-Heizung zusammengelötet.

AVR-BeschaltungEinige Atmegas 88PA altern hier in der Kiste vor sich her und ich dachte zumindest einer könnte mal was tun für seine Daseinsberechtigung. Also hab ich mal ein Standardlayout auf meinem Rechner rausgesucht und ging ein wenig ans Platinen ätzen. Ein LM50 zum Temperaturmessen war leider grade nicht verfügbar aber ein LM335z samt 2k2 Vorwiderstand an PC2 ist auch ganz hervorragend. Ein Crydom HD48125 (an PC1 angeschlossen, SSR – Solid-State-Relay) schaltet den Laminator entsprechend ein und aus.

Der Programmcode ist sehr einfach gehalten. Das komplizierteste ist die Konfiguration des Analog-Digital-Convertes (ADC). Alle 20 Minuten misst der Atmega gleich vier mal hintereinander die Temperatur und bildet den Mittelwert aus den vier Messungen. Wird 2 °C oder weniger gemessen wird für 10 Minuten der Laminator eingeschaltet. Der komplette Code fordert nicht mal 1% der Kapazität des Atmegas. Übrigens: RS232 ist mehr schein denn sein: Ich war nur zu faul zum Löschen aus dem Plan.

#ifndef F_CPU

#define F_CPU 8000000

#endif

#include <avr/io.h>

#include <util/delay.h>

#define Solltemp 563 //entspricht ca. +2°C

/* ADC initialisieren */

void ADC_Init(void) {

uint16_t result;

ADMUX = (0<<REFS1) | (1<<REFS0);      // AVcc als Referenz benutzen

//  ADMUX = (1<<REFS1) | (1<<REFS0);      // interne Referenzspannung nutzen

ADCSRA = (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler

ADCSRA |= (1<<ADEN);                  // ADC aktivieren

/* nach Aktivieren des ADC wird ein “Dummy-Readout” empfohlen, man liest

also einen Wert und verwirft diesen, um den ADC “warmlaufen zu lassen” */

ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung

while (ADCSRA & (1<<ADSC) ) {}        // auf Abschluss der Konvertierung warten

/* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten

Wandlung nicht übernommen. */

result = ADCW;

}

/* ADC Einzelmessung */

uint16_t ADC_Read( uint8_t channel )

{

// Kanal waehlen, ohne andere Bits zu beeinfluflen

ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);

ADCSRA |= (1<<ADSC);            // eine Wandlung “single conversion”

while (ADCSRA & (1<<ADSC) ) {}  // auf Abschluss der Konvertierung warten

return ADCW;                    // ADC auslesen und zurückgeben

}

/* ADC Mehrfachmessung mit Mittelwertbbildung */

uint16_t ADC_Read_Avg( uint8_t channel, uint8_t average )

{

uint32_t result = 0;

for (uint8_t i = 0; i < average; ++i )

result += ADC_Read( channel );

return (uint16_t)( result / average );

}

int main(void) {

uint16_t i = 0;

DDRB = 0;

PORTB = 0;

DDRC = (1 << PC3); //PC3 als Eingang eingestellt

PORTC = 0;

DDRD = 0;

PORTD = 0;

uint16_t adcval = 0;

ADC_Init();

while(1) {

adcval = ADC_Read_Avg(2, 4); //4 Messungen auf Kanal 2

if (adcval <= Solltemp){

PORTC |= (1 << PC3);

for (i = 0; i < 600; i++){

_delay_ms(1000);

}

PORTC &= ~(1 << PC3);

for (i = 0; i < 600; i++){

_delay_ms(1000);

}

}

else {

for (i=0; i < 1200; i++){

_delay_ms(1000);

}

}

}

return 0;

}

Ich weiß, ich weiß. Der Kundige AVR-Programmierer wird nun sagen:

“WAS?!? Der nimmt _delay_ms() und ne for-Schleife für 10 Minuten warten? Sowas macht man doch mit Timern!”

Dazu kann ich nur folgendes sagen:

  1. Für meine Anwendung ist es völlig wurscht ob es nun 10 Minuten sind oder 10 Minuten und 3 Sekunden
  2. Eine eigene Timerfunktion für 10 Minuten zu schreiben hätte mich sicher mehr Zeit gekostet als das ganze Projekt (2.5h wobei 2h für die Platine samt Lötstopplaminat draufgegangen sind)
  3. delay.h war grad verfügbar

Den Code für den ADC hab ich übrigens auch aus dem Internet gefischt, ich glaub aus dem AVR-GCC-Tutorial von http://www.mikrocontroller.net.

Die meiste Zeit hat eigentlich die Suche nach einem passenden Behältnis für die Heizung in anspruch genommen. Glücklicher Weise gab es Sperrmuss und jemand hat eine Küche entsorgt deren Hängeschränke genau auf meine Anforderungen passte. So steht nun in meinem Spind ein Hängeschrank aus Kiefernholz (massiv!) in dem die Möhren lagern. Auf einen Einlegeboden wurde das Innenleben des Laminators wie die Steuerungseinheit samt Atmega geschraubt. In den letzten Tagen war es schon recht kühl und die Heizung war schon in betrieb. Weder sind bisher die Möhren eingefroren noch ist der Stall abgebrannt. Es scheint zu funktionieren, was ich mir hier überlegt haben.

Veröffentlicht unter Programmierung, Reiten | Hinterlasse einen Kommentar

Ich vermisse dich jetzt schon

Ankra

*05.02.1975 +22.04.2010

So werde ich dich immer in Erinnerung behalten, mein weißer Wirbelwind.

Veröffentlicht unter Reiten | Hinterlasse einen Kommentar

MI-Sugar: Auch wieder beim Autor erhältlich

Heute habe ich nach langer Zeit mal wieder bei Berk Özer, auf kulfx, geschaut wie es um den Nachfolger von MI-SUGAR, Volta, bestellt ist. Da fällt mir doch auf, dass Berk selbst MI-SUGAR und einige Modelle (u.a. den OP-AMP 741) als Download anbietet. Sehr schön, wie ich finde.

Veröffentlicht unter MI-Sugar | Hinterlasse einen Kommentar

MI-SUGAR

mi_sugar_screenshotFür MI-SUGAR gibts eine eigene Seite, dort kann man u.a. MI-SUGAR in Version 0.5.8 herunter laden.

Veröffentlicht unter MI-Sugar | Hinterlasse einen Kommentar