19 maart 2024

Harmonische beweging van zuigers in motoren maken

De zuigers van een auto maken een enkelvoudig harmonische beweging. Stel je voor dat je maar twee zuigers hebt dan betekend het dus dat als de ene zuiger helemaal boven is de ander helmaal beneden is. Nou wil ik deze situatie in het echt nabootsen.

Mijn vraag is of iemand weet hoe dit het beste kan.


 

Als je maar 2 zuigers hebt staan ze tegelijk beide helemaal boven of beneden en maken ze een enkelvoudige harmonische sinusbeweging.

Lees verder . . . . 

Collega spacewuppy heeft dit al eens grafisch uitgewerkt:  zie hier .

Aangezien je het over een automotor hebt, heb je het normaal gesproken over een 4-slag (ofwel 4 takt) motor. Deze heeft een arbeidsslag en een spoelslag en heeft dus 2 x 360 = 720 graden nodig voor een volledige cyclus. De krukas gaat dus 2x rond voor één volledige cyclus. Als je over deze 720 graden 2 cilinders met zuigers plaatst moet je dus om de 360 graden een zuiger plaatsen. De éne is dan (net) bezig met de arbeidslag, en de andere is bezig met zijn spoelslag als ze bovenin staan. 360 graden later is het dan net andersom.

Nu heb je de mooie sinus van spacewuppy natuurlijk al gezien, maar hoe ontstaat die nu? Deze is eenvoudig grafisch te construeren. Als je de (krukas)cirkel verdeelt in in stukjes van b.v. 30 º en je projecteerd deze naar een plat vlak onstaat de sinus. Het is dus hetzelfde als bij een wisselstroom/spanningsvector bij elektriciteit. Dit is een ronddraaiende vector die bij 0 en 180º maximaal is. en bij 90º en 270º  0 is, ofwel de projectie op de verticale as geeft de spanning.

Op deze site staat een mooie applet die het wat sneller doet : http://www.ies.co.jp/math/java/samples/graphSinX.html

Wil jezelf een java applet maken die een sinusoide genereerd dan is hier een code:

// Sinusoide
import java.applet.*;
import java.awt.*;
public class Sinusoide extends Applet {

public void paint (Graphics g) {
    setBackground (Color.white);
    Dimension d = getSize();
    int x, y, breedte = d.width, hoogte = d.height;
    int uitslag = hoogte / 2;
    int lastX = 0, lastY = uitslag;
    double traject = 2 * Math.PI;
    double factor = traject / breedte;
    for (x = 1; x <= breedte; x++) {
        double sinus = Math.sin (x * factor) * uitslag;
        y = uitslag – (int)sinus;
        g.drawLine (x, y, lastX, lastY);
        lastX = x; lastY = y;
    }
}

}

***arjen***