Subwoofer (snikvariant)

Man tar en gammal subwoofer från ett trasigt Creative 5.1 system.
Hittar ett förstärkar kort från ett annat matar den med befintligt dragna 12 volt och styrkablar
(fanns när jag köpte bilen så varför inte nyttja det) via ett relä sedan upptäcker man att man får in generator knitter och letar då upp ett ännu äldre Mobira filter för 12 volt.

Resultatet blev en lite klen bas (har max styrka på subutgången)
men det blir bättre än utan bas. Pop pop itopp pop...

Automatisk ljusnivåreglering.

Tänkte att det skulle vara smidigt med lite automatik istället för den manuella justeringen som man alltid glömmer att justera till frustration för mötande. Givaren för nivå avläsningen är en kopia på dom jag sett på Bildelsdatabasen. En potentiometer med lite länkarmar. Jag tog en gammal pot. ifrån en radiostyrenhet som slaktats tidigare och länkarmar ifrån en beg. vindrutetorkare. Man tager vad man haver. Monterade pot. på tankbandet och länkarmar fäst vid bakaxeln. Pot.(10kohm inte så noga) matas med +5 volt och Jord i ändlägena. Signalen ut matas in på Analog ingång 2 på Arduinokortet.
 Sedan blev det att ersätta motstånden i den befintliga justeringen med egna. Det blev ett färdigt reläkort till Arduino. För den som undrar varför jag kopplade det första relät inv.så att den är aktiv jämt. Är det för att den ska ställa in sig i "normal" nivå oavsett strömförsörjning mm

Programmet läser av nivån 3 sek. efter start och justerar då in rätt nivå. Vet inte hur riktiga nivåregleringar fungerar men tanken är att man lastat in det som ska med och sedan startar och åker iväg. Om man vill ändra nivån så trycker man in knappen x antal ggr tills den ställer in sig på den nivån man vill ha. Sista steget (5 knapptryckningen) så gör den en ny avläsning av nivån om man vill. Det gäller väl att man står hyfsat still när man gör det och inte stutsar runt på någon skogsväg.
PS. Den större gröna dioden kopplade jag till halvljusautomatiken så att det blev en tydligare indikering när halvljuset är aktivt.                                                                                                









Uppdatering 2014-01:
Det blev en liten julklapp, jippi. Servomotor till Arduinokortet.
Så då har det blivit en konvertering av nivåregleringen till en analogjustering. Servomotorn styr en potentiometer på 1k. och den regleras mellon 0-300 ohm.
 Programvara har fått sig en uppdatering också.


Den läser av nivån med ca. 15 sek intervaller och
är det samma stabila nivå så justerar den servoläget.

Automatisk ljusnivåreglering Arduino Program

//Uppdaterad 2014-06
#include
Servo myservo; // create servo object to control a servo
//-----------------------Ljusnivå reglering
int LevelSensorIN = A2; // Nivå sensor ingången A2
float LevelValueA = 400; // ingångsvärden vid olika tidpunkter
float LevelValueB = 400; // ingångsvärden vid olika tidpunkter
float LevelValue = 400; // Nivå givarvärdet medel
float LevelVal = 0; // värdet till servo
int LevVal = 0; // servo värdet
//int Lev0=1024; int Lev1=355; int Lev2=325; int Lev3=315; int Lev4=0; //350,310,280
//int Lev0=1024; int Lev1=767; int Lev2=512; int Lev3=256; int Lev4=0; //350,310,280
// 620 upphissad, 500-460=normal, 408= last i bagagelucka
int Level_0_UT = 1; //Reläutgång 0 (normal=LOW)inverterat jämfört med dom andra utgångarna (orsak: spara ström)
int Level_1_UT = 2; //Reläutgång 1
int Level_2_UT = 3; //Reläutgång 2
int Level_3_UT = 4; //Reläutgång 3
int LevelResetPin = 0; // Resetknapp för ljusnivån
int LevelReset = 1; //Resetvärdet HIGH-LOW
byte pressCount = 0;
int tid = 10; // tid mellan avläsning av nivågivaren
long levelsekA = tid;
long levelsekB = tid * 2 ; // dubbla tiden

long previousSekunder = 0;
long interval = 300; // uppdaterings tid för max värdet (5 min = 300000 millisek = 300 sek)
unsigned long currentSekund = millis();
//servomotorn
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int index = 0; // the index of the current reading
int total = 0; // the running total

void setup() {
previousSekunder = currentSekund - (interval-270) ; // 270 timern uppvärmningstid 30sek

//--------------Ljusnivå reglering
pinMode(Level_0_UT, OUTPUT); digitalWrite (Level_0_UT,LOW);
pinMode(Level_1_UT, OUTPUT); digitalWrite (Level_1_UT,LOW);
pinMode(Level_2_UT, OUTPUT); digitalWrite (Level_2_UT,LOW);
pinMode(Level_3_UT, OUTPUT); digitalWrite (Level_3_UT,LOW);
pinMode(LevelResetPin, INPUT_PULLUP);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
for (int thisReading = 0; thisReading < numReadings; thisReading++) // medelvärde readings[thisReading] = 0; } void loop() { unsigned long currentSekund = millis()/ 1000 ; //unsigned long //-----------------Ljusnivå reglering if (levelsekA == currentSekund) { LevelValueA = analogRead(LevelSensorIN); levelsekA = levelsekA + tid*2; } //delay (800); if (levelsekB == currentSekund) { LevelValueB = analogRead(LevelSensorIN); levelsekB = levelsekB + tid*2; } delay (600); if (LevelValueB < LevelValueA*1,1 && LevelValueB > LevelValueA*0,9) {
LevelValue = (LevelValueB + LevelValueA)/2 ; // medelvärd
LevelVal = ((LevelValue-200)/265) * 1023 ; // ingångsvärdet får vara mellan 380(-300=8390) och 250 som ger ett värde mellan 0-1023. ((LevelValue-150)/240) * 1023
if (LevelVal > 1023) LevelVal = 1023; //else LevVal=LevelVal; // om givaren ger ett för högt värde >370(390)
if (LevelVal < 0) LevelVal = 0; //else LevVal=LevelVal; // om givaren ger ett för lågt värde <250
}
//int Lev0=1024; int Lev1=767; int Lev2=512; int Lev3=256; int Lev4=0; //350,310,280
if (766 < LevelVal && LevelVal < 1024) {digitalWrite (Level_0_UT,LOW) ;} else digitalWrite (Level_0_UT,HIGH);
if (511 < LevelVal && LevelVal < 767) {digitalWrite (Level_1_UT,HIGH);} else digitalWrite (Level_1_UT,LOW);
if (255 < LevelVal && LevelVal < 512) {digitalWrite (Level_2_UT,HIGH);} else digitalWrite (Level_2_UT,LOW);
if (0 < LevelVal && LevelVal < 256) {digitalWrite (Level_3_UT,HIGH);} else digitalWrite (Level_3_UT,LOW);
LevelReset = digitalRead(LevelResetPin);
if(LevelReset == LOW) // kontroll om nivåknappen är intryckt
pressCount++;
switch(pressCount){ // Lev0=1024; int Lev1=350; int Lev2=310; int Lev3=280; int Lev4=0; // 620 upphissad, 500-460=normal, 408= last i bagagelucka
case 1:
digitalWrite (Level_0_UT,LOW); digitalWrite (Level_1_UT,LOW);
digitalWrite (Level_2_UT,LOW); digitalWrite (Level_3_UT,LOW); LevelVal = 1000; //305 ohm
break;
case 2:
digitalWrite (Level_0_UT,HIGH); digitalWrite (Level_1_UT,HIGH);
digitalWrite (Level_2_UT,LOW); digitalWrite (Level_3_UT,LOW); LevelVal = 650; //202 ohm
break;
case 3:
digitalWrite (Level_0_UT,HIGH); digitalWrite (Level_1_UT,LOW);
digitalWrite (Level_2_UT,HIGH); digitalWrite (Level_3_UT,LOW); LevelVal = 350 ; //95 ohm
break;
case 4:
digitalWrite (Level_0_UT,HIGH); digitalWrite (Level_1_UT,LOW);
digitalWrite (Level_2_UT,LOW); digitalWrite (Level_3_UT,HIGH); LevelVal = 2; //0 ohm
break;
case 5:
pressCount = 0;
break;
}
LevVal = map(LevelVal, 0, 1023, 2, 80); // 305 ohm=80 scale it to use it with the servo (value between 0 and 180)
myservo.write(LevVal); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
delay(200);
}

LED golvbelysning.

LED listerna som satt i Reflexrampen har blivit monterade i kupen som golvbelysning.
Blev en tjuvkoppling under reläboxen för att norpa innebelysningsström.
Så nu kan man se det skitiga golvet, jippi.

Varför jag tog bort LED belysningen i Reflexrampen var att för att det blev en lite modigare belysning....fast jag har en avstängningsknapp som fortfarande är i AV läget tillsvidare....















Borrade hål i bakpanelen och monterade små glödlampor som jag målade lite svart i toppen på
så att det inte skulle bli skarp direktbelysning. (orsaken till att inte välja LED var att det blev för skarpt ljus.) Vilket min bild motsäger men kameran ljuger.

AUC, AQS (Air Quality Sensor) eller Luftkvalitets Sensor kärtbarn har många namn....

Och en bild säjer mer en tusen ord....
En ljussensor sitter och kontrollerar statusen på AQS sensorn. Sensorn inkapslad för omgivningsljus
vid luftintaget utanför kupefiltret. Om den skulle indikera på dåligluft gul eller rött så kopplas
recirkulationen in sålänge som luften är dålig eller max 5 min.. Programmet läser också av om
recirk. är aktiv eller inte.

 

















Placerat en ledgrafindikering bredvid turbomätaren.
(Lite ljussvag på bilden.)












Liten uppdatering av Mjukvaran som aktiverar 5 min timer även för Manuellt aktiverad recirkl.
så att man inte glömmer bort den och kvävs...här skulle man kunna tänka sig en fuktsensor som får
hålla koll på när det är dags att inaktivera recirkulationen men det blir i version 3.
Den klena indikeringen bytes ut mot en lysdiod som kan skifta från grönt till rött som jag monterade
in i ACC enheten (här blev det nästan felborrat inte lätt när man ska tänka spegelvänt och borra.)
Den blinkar grönt vid uppvärmnings fasen och blinkar rött när AQS visar "gult" och ger fast rött sken vid "röd" nivå. Jag kan väl säga att vi har väldigt bra luft i Sverige har inte lyckats få den att indikera gult mer än vid testning......Får väl åka ner till Rhurområdet i Tyskland för att få dålig luft det är väl där BMW och Mercedes testar sina AQSer.
Uppdatering: Får ta tillbaks det där med Ruhrområdet. Efter att jag placerat AQS sensorn brevid inloppet vid filtret dröjde det inte länge föränn jag fick den att visa rött (typisk att det var bakom en 9-5a....). Satte dit ett litet plast tak så att den inte ska bli blöt vid regn.
Uppdaterat med symboler för dioderna på ACCn.
En diod som visar när 5 min timern är aktiverad.
Ni får väl ha en gissning på vilken diod som står för vad.....(se bild högre upp)
Uppdatering 2014-02:
Nu med snabbare avläsning av recirk. dioden i mjukvaran.

AUC eller AQS Air Quality Sensor programmet.

Senaste programvaran finns på Google Driven./2021-06-07

Automatisk "Follow me home" funktion.

eller en dålig raggnings replik ? Iochmed att helljus automatiken inte fungerade som jag ville så
tänkte jag nyttja relät till denna funktion. När det är mörkt ute och man stänger av bilen så
tänds helljuset i ca. 30 sek. så att man hittar hem ordentligt. Jag utnyttjar den tidsfördröjda
dator avstängningen till Arduino korten så att dom är aktiverade 30 sek efter att tändningen
slås av. Så nu är det bara att vänta på Höstmörkret......

Sedan en modifiering av mjukvara:

  // Follow Me Belysning
  powerOnIN = analogRead(5);         //läser av om 12 volt är på pin 5 analog ingång
    lightsensorValue = analogRead(frontlightPin);    //läser ljusensor värdet
    refValue = analogRead(reflightPin);            //läser ref.ljusensor värdet
  if (powerOnIN < 500 && refValue > night && lightsensorValue > night) // 12 volt saknas och ljussensorn & ref. sensorn ind. mörker +20 
   {
      delay (100);  // ljusförändring mellan tiden 40ms
      lightsensorValue = analogRead(frontlightPin);    //läser ljusensor värdet
      refValue = analogRead(reflightPin);            //läser ref.ljusensor värdet
      powerOnIN = analogRead(5);         //läser av om 12 volt är på pin 5 analog ingång
  if (powerOnIN < 500 && refValue > night && lightsensorValue > night) // 12 volt saknas och ljussensorn & ref. sensorn ind. mörkervärde 
              {
                digitalWrite(lightrelayPin,HIGH);  // aktiverar helljuset
                delay(30000);                      //helljus på i 30 sek
                digitalWrite(lightrelayPin,LOW);  // bländar av helljuset
              } 
              else  {
                digitalWrite(lightrelayPin,LOW);  // bländar av helljuset
              }
              }
 else  {
                digitalWrite(lightrelayPin,LOW);  // bländar av helljuset
       }

Världens minsta Turbotryckmätare ?

Eftersom jag har lite kapacitet kvar på Arduinokortet för Hel och Halvljuset så blev det en liten tryckmätare.
Med en programsnutt ifrån Arduino.cc hemsida. Det enda jag behövde ändra var utgångarna.
0-5 volt ingång stämmer också perfekt för värdena ifrån MAP sensorn. 
Det enda jag ska föröka göra är att den visar peakvärdet och uppdaterar den 1ggr/sek.

(Dioden högst upp visar när Halvljus-automatiken har tänt halvljuset.)

1 diod = -0,75 bar
4 dioder = 0 bar
6 dioder = 0,5 bar
8 dioder = 1 bar
9 dioder = 1,25 bar


2015-04: Ändrat i mjukvara så att tiden nollas så länge maxtrycket uppdateras
Det innebär att maxtrycket visas i 10sek. efter att det uppnåtts.
Vet inte varför jag inte gjort den här förändringen tidigare....

Koden med Max. visning i 10 sek.:

// these constants won't change:
const int analogPin = A0;   // the pin that the potentiometer is attached to
const int ledCount = 10;    // the number of LEDs in the bar graph 
int ledMax = 0;
long previousMillis = 0;
long interval = 10000;           // interval at which to blink (milliseconds)

    int ledPins[] = {
      4, 5, 6, 7,8,9,10,11,12,13 };   // TURBO an array of pin numbers to which LEDs are attached
void setup() {
  // TURBO loop over the pin array and set them all to output:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
     pinMode(ledPins[thisLed], OUTPUT);
  }       //diodtest snurra
      for (int thisLed = 0; thisLed < ledCount; thisLed++) {
      digitalWrite(ledPins[thisLed], HIGH);
      delay(100);   
      digitalWrite(ledPins[thisLed], LOW);
  }
}
void loop() {
 //  TURBO tryckmätaren
    unsigned long currentMillis = millis();   // flyttad 2015-04  
int sensorReading = analogRead(analogPin);  // 0-5 volt
   // mapsensor värden: 0,75bar=3,3volt ; 0,5=2,8; 0,25=2,4; 0=1,9; -0,5=0,95; -0,75=0,48
   int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
      if (ledLevel > ledMax) {
          ledMax = ledLevel;     // läser av maxvärdet  flyttad 20115-04
          ledMax = ledLevel;   } 
/*
      Alt. om den bara skall visa en diod för aktuellt tryck.
 for (int thisLed = 0; thisLed < ledCount; thisLed++) {    // loop over the LED array:
       digitalWrite(ledPins[thisLed], LOW);     // släcker alla dioder
       digitalWrite(ledPins[ledLevel], HIGH);  //tänder bara den dioden för aktuellt värde
       digitalWrite(ledPins[ledMax-1], HIGH);  // visar max nivån under en viss tid.
    */
  // loop over the LED array:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
     if (thisLed > sensorReading) {
       ledMax == ledLevel;
     }// if the array element's index is less than ledLevel,
     // turn the pin for this element on:
     if (thisLed < ledLevel) {
       digitalWrite(ledPins[thisLed], HIGH);
      digitalWrite(ledPins[ledMax], HIGH);
     }    
      // turn off all pins higher than the ledLevel:
    else {
      digitalWrite(ledPins[ledMax-1], HIGH);
      digitalWrite(ledPins[thisLed], LOW);
    }
      // flyttad unsigned long currentMillis = millis();
   if(currentMillis - previousMillis > interval) {
     // save the last time you blinked the LED
    // flyttad previousMillis = currentMillis;  
    ledMax = 0;
     }
  }
}

Backsensor ingår väl på en modern bil.

Nu när det är vår och barnen på gården börjar hoppa och skutta så är det säkrast att ha lite hjälp när man backar ut bilen, inte lätt att hålla koll på dem.
Tänkte att det är väl simpelt att slänga dit grejerna och koppla in det men tji fick jag.
Började med att kablarna till backlampan byter färg i luckan från brun & blå till
vit & svart. Men med lite ohmmätning och en knappnål så hittade jag rätt vita kabel i tröskeln vid bakdörren.

Sedan skulle det bara vara att borra hål i kofångaren med en medföljande 22mm borr och med en lång borr som jag har sedan tidigare. Tyvärr var den bara 6 mm och inte 8-10 mm som man skulle behövt för att få igenom kontakten. Fick borra snett nedåt för att kunna vidga hålen och med lite svordommar och hetsiga ord kunde jag mosa igen kontakterna. Enklast kanske hade vart att skruva ner kofångaren helt man läs sig hela tiden. Och via "dragkrokskablagegenomgången" drog jag kablarna vidare in i bagegeutrymmet.
Skitig bil som vanligt.
Centralenheten placerade jag där elantennen satt den skorrade mer än hissade upp och ner antennen trots renoverings kit och ny antennpinne så den åkte ut.
Högtalaren placerades på enheten också så man får sänka volymen lite om man ska höra den.
Tänkte att jag skulle koppla in mute kabeln på stereon samtidigt som dom främre lamporna
så tystnar stereon när man backar. Får se när det blir av.....
Det blev kvickare gjort än väntat jag passade på när jag ändå höll på med kabeldragning.
Tydligen triggar "mute" ingången på stereon på jordning så det blev ett litet relä för att lösa det.
Men det fungerar stereo tystnar och dom främre backlamporna tänds vid backning.




Komplettering med DRL, Daytime running lights.

Kompletterat bilen med DRL för att gör den lite mer synlig än med sidobelysningen.
Sidolysena tänkte jag koppla framöver till backlampan så att dom lyser när man backar.
Men det blir en senare fråga. Så här ser det ut snabbmonterat och tjuvkopplat.

OBD2 med Bluetooth och Sulfplatta.

Det blev en liten julklapp till mig själv, jippi. Fick på nåder låna grabbens Surfplatta för att
testa grejerna. Själv har jag en sån här "Ifåne" som det inte funkar med. Provade också med en laptop med blåtandsdongel och med lite ologisk installation kom det igång också.
(det får ju inte vara enkelt). Så nu kan man få lite live data via OBD2 uttaget också. Tanke är att man kanske kunde ha en liten Surfplatta som Bildator så det blir att skriva in en sån på önskelistan till nästa Jul. Det finns dock en nackdel och det är att OBD2 enheten alltid har spänning på sig. Så det blir väl en omkoppling av strömmatningen om man ska ha den permanent i bilen men det blir väl till nästa Jul. (Återkommer med bilder, går inte att ladda upp på det gamla sättet. Med lite trixande så gick det, Det får ju inte vara enkelt....)
Sedan upptäcker man att motor tempen inte går upp mer än till 70 C och jag som trodde att det vara tempmätaren som var trött.....
Och nu är termostaten bytt och tempen uppe i 84-89 grader. Men tempmätaren är nog lite trött ändå. Hänger på 8- halv 9 men men det blir en senare fråga......

Lite uppdatering: Det har blivit inköp av en 7 tums Surfplatta så nu kan man härja fritt med appar.

Nästa steg skulle vara att montera den i panelen som så här liksom. Länk.
Men den andra panelen jag har är upptagen i en flygsimulator i garaget så jag ska se om man kan
få låna tillbaks den för att börja såga i den.


Sen blir det väl att koppla om Pin 16 eller sätta ett relä så att man bryter strömmen till OBD2 enheten när man slår av tändningen. 
Nu har jag kopplat in ett relä till matningsspänningen till OBD2 uttaget så den startar upp först när tändningen är på.
 Sedan har jag sågat och demolerat panelen för att få in surfplattan. Plasticpadding och målning
är klart men ni får ursäkta finishen det har inte blivit något precisions arbete.

Inkoppling av laddnings kabeln , här försökte jag jaga fram en kombinerad ladd- och ljud ut kabel
men jag blev aldrig klok på Samsungs tillbehör vilka som passade till vilka modeller.
Sedan behövdes det någonslags bakgrund när plattan inte satt på plats och ett enkelt sätt att ta bort den på....Det blev slakt av ett DVD fodral och en bild på SAAB logga samt ett buntband som man drar i för att lossa plattan. Får se om det fungerar i verkligheten tills jag kommer med någon
bättre lösning.
Ni som räknar DIN platser ser att det kommer att saknas en DIN för askopp och 12 volts uttag.
För jag kommer att behålla stereo som den är så när jag jagade bränslepump på Biltema så
köpte jag in ett dubbel uttag för 12 volt och med USB laddning. Den monterades in i den nedre baljan och med USB utgången bakom allting. (Det börjar blir rörigt där bakom...) 

Det blev lite slaktande av metall skenorna för DIN facken allt för att få in
ACC enheten men så här blev det.

 Uppdatering 2013-06: Börjat så smått att försöka koppla in Surfplattan till stereon och
gjort en kabel för AUX ingången (en kopia på KCE237B kabel).
Hittade denna pin. konfig på ingången och använder ingångarna 3,5 och 11 för min kabel. Sedan behövde man aktivera AUX ingången på stereon. Nästa steg blir att lista ut hur man gör en Samsung kabel med Audio ut. Men nu kan man koppla in IFånen ivilketfall......


Uppdatering 2013-06:
Fick beställa Samsung kontakten ifrån denna sida.http://shop.kineteka.com/samsung-galaxy-tab-connector (beställde två, en i reserv) sedan var det "bara" att löda.... man märker att man ser sämre
nuförtiden eller är det kontakterna som blivit mindre ?
Med hjälp av denna "enkla" beskrivning: http://forum.xda-developers.com/showthread.php?t=2252479 så går det att lista ut hur man ska koppla. Men jag kan klippa ut det som hjälpte mig.:
"OK, riddle is solved - you can get the 30 pin audio with the following:
  • must connect pins 14 (Accessory INT) and 15 (Gnd) -> gets you "docked"
  • must connect pin 13 with ~4.2k (3.2k+1k; may vary from 3.7k to 4.8k) to 14+15 -> gets audio to pins 27 (L) and 28 (R)
  • EDIT: you should also have the audio-ground separate from power supply ground. So if you can manage this, then connect only Pin 30 to the shield of the audio cables (L+R).
If you like car-dock mode (audio stays on the device) use a resistor in the range of 6.5k to 8k.

Enjoy "   USB laddningen och datakom. kopplades in enligt detta schema lite modifierat. Skippade USB.hubben verkar vara lite överdrivet men man kanske ångrar sig.
Hittade den också på samma forum. Samt en bild på kontakten innan jag vulktejpade ihop den ni vill nog inte se lödningarna på den därav silikonlimmet.

Updatering. 2014-06:
OBD2 har byts ut mot en mindre variant som blir smidigare att ha under ratten.
Samt så var det utförsäljning av Samsung docknings enheter så jag slog till och köpte 2 st.
en jag plockade isär i molekyler och monterade in och en i reserv, ni vet bra och ha.